Some advice.. - Android

I really dislike the "chef" moniker when it comes to Android, since we are more of an open-source community. I think it implies a "file pusher" mentality. But then again, I am biased against proprietary versions of Android like Sense, so feel free to disregard all of this.
Here's my advice for those looking to make their own Android ROMs.. Stop. Write an app or two first, learn how the system works from a developer standpoint. Learn some Java. Read the developer documentation. Learn how to use Git. Then learn how to build AOSP from source. Read the porting guides, and learn how the build system works (the links below have almost everything you could possibly want to know). Now try to put your new found skills to work on enhancing the platform by writing code or making theme overlays. And share! And put that **** on your resume. There is a *ton* of information out there but any kind of "step-by-step rom cooking guide" is going to be a complete fail- it's too broad of a subject.
Android Developer Guides: http://d.android.com
Working with AOSP source: http://source.android.com
Platform Developer Guide: http://pdk.android.com
Android Gitweb: http://android.git.kernel.org
Git Ready (Git tips and tricks): http://www.gitready.com/
Building CyanogenMod: http://wiki.cyanogenmod.com/index.php/Building_from_source
How Dexopt works and what are those odex files: http://android.git.kernel.org/?p=pl...bcd225e47b2cc7abb2a366112d3aeb45936;hb=master
The PDK site is absolutely vital if you are going to work on custom ROMs. Read every single page. Twice. Some of the info isn't up to date, but you'll get a really good idea about what goes into actually configuring Android to work on a real device.

I cannot agree more. Learning the in's and out's of the Android framework will benefit newcomers SIGNIFICANTLY.
Building ROMs is easy, fixing bugs and adding new functionality is the fun stuff, and having a solid understanding of the Android framework helps with this. The best way to learn is to pick up the Android SDK and whip up some apps, there are great tutorials out there.

Awesome information! It is good to see I have been reading the right literature... There are also a few that I missed... Thanks again for the links!

cyanogen said:
I really dislike the "chef" moniker when it comes to Android, since we are more of an open-source community. I think it implies a "file pusher" mentality. But then again, I am biased against proprietary versions of Android like Sense, so feel free to disregard all of this.
Here's my advice for those looking to make their own Android ROMs.. Stop. Write an app or two first, learn how the system works from a developer standpoint. Learn some Java. Read the developer documentation. Learn how to use Git. Then learn how to build AOSP from source. Read the porting guides, and learn how the build system works (the links below have almost everything you could possibly want to know). Now try to put your new found skills to work on enhancing the platform by writing code or making theme overlays. And share! And put that **** on your resume. There is a *ton* of information out there but any kind of "step-by-step rom cooking guide" is going to be a complete fail- it's too broad of a subject.
Android Developer Guides: http://d.android.com
Working with AOSP source: http://source.android.com
Platform Developer Guide: http://pdk.android.com
Android Gitweb: http://android.git.kernel.org
Git Ready (Git tips and tricks): http://www.gitready.com/
Building CyanogenMod: http://wiki.cyanogenmod.com/index.php/Building_from_source
How Dexopt works and what are those odex files: http://android.git.kernel.org/?p=pl...bcd225e47b2cc7abb2a366112d3aeb45936;hb=master
The PDK site is absolutely vital if you are going to work on custom ROMs. Read every single page. Twice. Some of the info isn't up to date, but you'll get a really good idea about what goes into actually configuring Android to work on a real device.
Click to expand...
Click to collapse
I completely agree. But it's cyan saying it, who wouldn't
I am ok with "chef" terms because they were born on XDA, which makes them kinda cool, but I agree that the file-pusher mentality/stereotype is quite derogatory.
I hope this section goes places.
P.S. Hearing a diehard android dev like you (cyanogen) say that you are biased against sense really made me think about how good plain old android really is... so clean and functional. Good stuff bro.

very nice thanks for the info was looking into this...now to fill the brain.

Weird how this is exactly what i was looking for. Time to read. Thank you cyanogen.

I'm with Cyanogen on the bias against pre-built, proprietary code blobs. Even the non-free, basic parts to get AOSP to build for dream give me the hivie-jivies, mostly because the reason we're in such a pit now with further versions of Android is because we have no source to maintain working basic functionality (yeah, video in a device capable of recording/playback is basic).
I'll try to work a couple basic tutorials based on my rom-building exploits covering things from getting android built from source, to actual troubleshooting possible problems, to having a hand at modifying the source so you can make the built your own. I really want to see somebody come up with a real custom rom on the android part of the OS and leave the linux part rest for a while.

Oh man! PDK! Never seen it! Thanks a lot

Great job
As always, my hat is off to you Cyanogen. This is exactly what i was looking for. Once again thanks for your hard work and dedication to the project.

This is awesome. I am going to be learning this stuff over summer. But there seems to be a gap of information between learning the android stuff, and learning the linux stuff.

Hi do you know some guides online to build Overclocked Kernels ???

PDK website
Odd that the PDK website does not function. Anyone know who owns it?

mistere372002 said:
Odd that the PDK website does not function. Anyone know who owns it?
Click to expand...
Click to collapse
Works fine for me. What issues are you having?

I guess I'll be the first in the thread to ask the extreme newbie questions.
Are the links in the OP in a particular reading order, or is there a recommended order?
Since the entirety of my programming experience is some simple VB type stuff, will I be able to learn from the ground up via those links, or will it be more like trying to figure out the words in a Chinese book with no knowledge of the language?
At one point I had managed to cobble together a web front end on my Droid for wowhead.com (all it did was bring up a screen with a search box, which would then pop open the browser with the results of whatever you searched for), but to say I had a firm grasp of what I was doing in my tinkering would be a gross overstatement.

cyanogen said:
I really dislike the "chef" moniker when it comes to Android, since we are more of an open-source community. I think it implies a "file pusher" mentality. But then again, I am biased against proprietary versions of Android like Sense, so feel free to disregard all of this.
Here's my advice for those looking to make their own Android ROMs.. Stop. Write an app or two first, learn how the system works from a developer standpoint. Learn some Java. Read the developer documentation. Learn how to use Git. Then learn how to build AOSP from source. Read the porting guides, and learn how the build system works (the links below have almost everything you could possibly want to know). Now try to put your new found skills to work on enhancing the platform by writing code or making theme overlays. And share! And put that **** on your resume. There is a *ton* of information out there but any kind of "step-by-step rom cooking guide" is going to be a complete fail- it's too broad of a subject.
Click to expand...
Click to collapse
So, firstly thanks for the websites. Personally, I already knew about most of those. But that is beside the point right now.
Why would someone want to learn how to program anything when they are just building a rom? I just don't understand what is wrong with someone only tweaking and slimming a rom down. What point would it be for a website like this to make everybody just go out and learn on their own EVERYTHING, and then what would this site be for? Posting only in the development forums? This is a support website. Plain and simple. Who cares if someone asks a question? If they searched and couldn't find something, let it go.
In your same thought process, very FEW WM chefs could call themselves chefs. And before you ask yes, I could call myself a chef because I have written quite a few apps to assist in building a rom or actual tool for WM. Maybe not the best chef, but one nonetheless.
I just think this is basically discouragement of any new developers/chefs from posting something in fear of being chastised. I am absolutely still learning android. If it wasn't for the people of SDX, particularily joeykrim, I wouldn't be so close to a final product of my Android kitchen.
This being said, maybe I am just full of crap and the only one that will go against your POV. Mainly because I am not afraid to state my opinion. And this POV is wide across the forum and this is why I don't contribute much here anymore

cyanogen said:
I really dislike the "chef" moniker when it comes to Android, since we are more of an open-source community. I think it implies a "file pusher" mentality. But then again, I am biased against proprietary versions of Android like Sense, so feel free to disregard all of this.
Here's my advice for those looking to make their own Android ROMs.. Stop. Write an app or two first, learn how the system works from a developer standpoint. Learn some Java. Read the developer documentation. Learn how to use Git. Then learn how to build AOSP from source. Read the porting guides, and learn how the build system works (the links below have almost everything you could possibly want to know). Now try to put your new found skills to work on enhancing the platform by writing code or making theme overlays. And share! And put that **** on your resume. There is a *ton* of information out there but any kind of "step-by-step rom cooking guide" is going to be a complete fail- it's too broad of a subject.
Android Developer Guides: http://d.android.com
Working with AOSP source: http://source.android.com
Platform Developer Guide: http://pdk.android.com
Android Gitweb: http://android.git.kernel.org
Git Ready (Git tips and tricks): http://www.gitready.com/
Building CyanogenMod: http://wiki.cyanogenmod.com/index.php/Building_from_source
How Dexopt works and what are those odex files: http://android.git.kernel.org/?p=pl...bcd225e47b2cc7abb2a366112d3aeb45936;hb=master
The PDK site is absolutely vital if you are going to work on custom ROMs. Read every single page. Twice. Some of the info isn't up to date, but you'll get a really good idea about what goes into actually configuring Android to work on a real device.
Click to expand...
Click to collapse
Thank you.

cyanogen said:
I really dislike the "chef" moniker when it comes to Android, since we are more of an open-source community. I think it implies a "file pusher" mentality. But then again, I am biased against proprietary versions of Android like Sense, so feel free to disregard all of this.
Here's my advice for those looking to make their own Android ROMs.. Stop. Write an app or two first, learn how the system works from a developer standpoint. Learn some Java. Read the developer documentation. Learn how to use Git. Then learn how to build AOSP from source. Read the porting guides, and learn how the build system works (the links below have almost everything you could possibly want to know). Now try to put your new found skills to work on enhancing the platform by writing code or making theme overlays. And share! And put that **** on your resume. There is a *ton* of information out there but any kind of "step-by-step rom cooking guide" is going to be a complete fail- it's too broad of a subject.
Android Developer Guides: http://d.android.com
Working with AOSP source: http://source.android.com
Platform Developer Guide: http://pdk.android.com
Android Gitweb: http://android.git.kernel.org
Git Ready (Git tips and tricks): http://www.gitready.com/
Building CyanogenMod: http://wiki.cyanogenmod.com/index.php/Building_from_source
How Dexopt works and what are those odex files: http://android.git.kernel.org/?p=pl...bcd225e47b2cc7abb2a366112d3aeb45936;hb=master
The PDK site is absolutely vital if you are going to work on custom ROMs. Read every single page. Twice. Some of the info isn't up to date, but you'll get a really good idea about what goes into actually configuring Android to work on a real device.
Click to expand...
Click to collapse
Thanks for your support/advice,
I'm trying to understand all the stuff in order to create a new ROM for Tattoo from 0, and I will take your info in order to. Crate this ROM and make a step by step manual to help people to understand how to modify their Tattoo's. I will like to see this cooperative knoledge share for this phone. As more peoople understands all this stuff, and all this work done by the comunity, more people will join and share to have better phones every day.
Tanks

java version
hi all,
Working 100%. Thanks for this great work. Now runing this 2.6.34 kernel on tattoo. Just now ajusting the kernel configuration.
Cheers

great advice
Cyanogen
Thanks for your support & advice
Time to start reading....
trying to understand all that is needed ==
TO BE A DEVELOPER..
IF ANY BODY HAS MORE INFO OR VIDEOS ..
PLEASE POST
----------------------------------
Currently own a Sprint EVO 4g > and plan on making great things for it..

Cyanogen you are so damned right. Building a Rom should implicitly mean that you know git, Android, dev and... read api and docs
I'm thinking about dsixda Rom kitchen.
I use its scripts to unpack kernel and zip everything, but largely customized the scripts and added some. In fact I love shell scripts.
I just wish you could also post a link to a toolchain tutorial for those willing to compile binaries from sources on x86 for an ARM architecture. And also to add shared libraries.
Have a nice day.

Related

[Q] Kitchen for Samsung Epic

Will someone please help me in getting a kitchen set up for the Samsung Epic and at least have the paitence to teach me the basic skills of developing for Android and building ROMs for Android. (Like what is the stuff I need to know, and stuff that is essential to having a working Android ROM)
Please and thank you,
Korey
Whosdaman said:
Will someone please help me in getting a kitchen set up for the Samsung Epic and at least have the paitence to teach me the basic skills of developing for Android and building ROMs for Android. (Like what is the stuff I need to know, and stuff that is essential to having a working Android ROM)
Please and thank you,
Korey
Click to expand...
Click to collapse
Here are some links to get you started. There's a lot of stuff to learn, so my best advice is to be patience and lurk, read, and learn. I know nothing about your particular device, but much of this will apply.
http://android-dls.com/wiki/index.php?title=HOWTO:_Unpack,_Edit,_and_Re-Pack_Boot_Images
http://forum.androidcentral.com/hacking/6037-general-rom-faq.html
http://forum.xda-developers.com/showthread.php?t=633246
http://blog.coralic.nl/2010/01/28/build-eclair-aka-android-2-1-for-hero-from-source/
http://forum.xda-developers.com/showthread.php?t=622916
http://forum.androidcentral.com/htc...how-build-your-own-kernel-package-source.html
http://forum.xda-developers.com/showpost.php?p=6738713&postcount=1
http://www.kandroid.org/android_pdk/index.html
http://android-dls.com/wiki/index.php?title=Main_Page
https://docs.google.com/Doc?docid=0AcdxIJRSH9ypZGZzc2pxNDlfMjdnazk4OHNxZA&hl=en
http://forum.xda-developers.com/showthread.php?t=641223
http://adrianvintu.com/blogengine/post/Colored-Logcat-Script-for-Windows.aspx
http://www.androidenea.com/2009/08/init-process-and-initrc.html
http://forum.xda-developers.com/showthread.php?t=623976
http://lukasz.szmit.eu/2009/12/making-your-own-rooted-android-rom.html
http://groups.google.com/group/android-kernel
http://groups.google.com/group/android-building
http://groups.google.com/group/android-porting
http://groups.google.com/group/android-developers
http://groups.google.com/group/android-ndk
http://groups.google.com/group/android-platform
Look for the sticky thread by Cyanogen in this forum called "some advice". Are you looking to build roms from source, or just modify existing roms?
Do you know any Java or C?
Building roms may seem fun, but it takes research and patience. Lurking github commits, textbooks, and the forums is a great start. The community is very eager to help, and that's one of my favorite parts about android. But deving shouldn't be as simple as copy paste. Where's the fun in that?
I understand where you're coming from though, I was the same way a few months ago. Built a rom from source, posted it, then realized how uninformed I was.
I am now improving my skillz by reading textbooks on Java ("Head First Java") and C ("The C Programming Language"), both available as pdf documents. I'm mucking around in kernels and am going to start writing apps as well. Its a good place to learn the framework. You could also get into theming, but that requires a little graphic design know-how.
Good luck man, and have fun with it
Sent from my Nexus One using XDA App
Me too would like to learn more about creating ROMs for android (Galaxy S I9000 here)
I do have java experience (quite a lot, actually) but I really have no idea where to start when creating a ROM
thanks
Did you ever get a kitchen going?

A MUST-READ for aspiring ROM "Developers"

This article appeared today on the main page of XDA and I feel that it's a very important lesson for any/all new ROM devs.
Sage Advice from Cyanogen Still Valid Today
http://www.xda-developers.com/android/sage-advice-from-cyanogen-still-valid-today/
Excerpt:
He had this advice to offer for those looking to make their own Android ROMs:
Stop. Write an app or two first, learn how the system works from a developer standpoint. Learn some Java. Read the developer documentation. Learn how to use Git. Then learn how to build AOSP from source. Read the porting guides, and learn how the build system works….. Now try to put your new found skills to work on enhancing the platform by writing code or making theme overlays. And share! And put that s**t on your resume. There is a *ton* of information out there but any kind of “step-by-step rom cooking guide” is going to be a complete fail- it’s too broad of a subject.​As XDA has grown right along with the meteoric rise of Android, so has a desire of users to create their own ROMs, kernels, themes, and so on. Much of this work classifies as “original development,” but there’s been a growing trend to what many are calling “derivative development.” This category covers most of ROMs based on stock releases from the manufacturers, applying patches and scripts aimed at optimization, theming and/or removing stock applications, and using “kitchens” that run a stock release through a list of scripts and then repackage as a recovery-flashable update.zip. This is what Cyanogen was expressing frustration about—shortcuts being taken to achieve a product that differs only slightly from stock (derived) and pushed out instead of building from source and delving into the core of Android and making something truly original.
XDA-Developers exists first and foremost for developers. It’s at the core of who we are; it’s in our blood; and it’s in the air we breathe. There is a place for derivative works—they provide an entry to the scene which can help to introduce people to the wonders of Android. But let’s not stop there. Don’t be satisfied with just creating yet another derivative of someone else’s work. Instead, follow Cyanogen’s sage advice and learn about Android from the ground up, and create something truly original and innovative.
Click to expand...
Click to collapse
Guess I should continue with this hello world app... haha
Op just explained 99% of our roms lol
Repackage, rename, reskin and ask for donations. Rinse lather and repeat. Now your a dev!
Ha.
True software developers understand the wisdom of code reuse.
So ,in my opinion, if a fledgling developer takes a set of code and applies addons, makes a few setting changes then calls it a ROM and provides users benefit...then they are on the path.
Sent from my SAMSUNG-SGH-I717 using Tapatalk 2
andrawer said:
Ha.
True software developers understand the wisdom of code reuse.
So ,in my opinion, if a fledgling developer takes a set of code and applies addons, makes a few setting changes then calls it a ROM and provides users benefit...then they are on the path.
Sent from my SAMSUNG-SGH-I717 using Tapatalk 2
Click to expand...
Click to collapse
Even if they fail to write a single line of original code?
I'm with cyanogen on this one...
saddly alll this is sementic
if the world of android was perfect then this would be true .by perfect i mean everything being open source ...
but if everything was open source we woudlnt have things like arc touchwizz blurr or sense , it is my opinion and shared by many others that android would be very boring if we only had aosp .
what does a coder brings to touchwiz sense or blurr device ?
the market is filled with cool apps and launcher .. 99% of them coders will make apps for android and wont bother with anything else
that brings me to my next point . building from source means on top of aosp , or in my terms vanilla android .. many devs love vanilla and its fine but what about those who dont ?
99% of the rom on xda are just that : either source compiled with apps added or stock deodex rom with a theme and apps added ..
here is the but , and before i say it i wanna say everyone is entitled to his opinion and im not bashing anyone ,
without guys like me who just hack the code and spend countless hours looking at what the code is actually doing and port the nice stuff from sense to TW or form CM to TW and RE (reverse engineer all these nice codes) 99% percent of the android devices would be boring because lets face it there is only one aosp device / year..
so from what Cyanogen is saying we should all buy a gnex and stop supporting those that make android close source,
but wait without them , many things woudlnt be in CM in the first place , what is cm without all these kangs? a glorified aosp ?
ok maybe im pushing but you get my drift...
how many true innovations by Cyanogen vs them Proprietary UI ?
fun fact the head (or ex ) of Cyanoen now works at samsung and help make touchwiz better (close source)
what about miui , they have so many innovations , and they dont share any of there code ..
so as I said there is no black or white here
thats what android is all about make your own thing play with it call it yours and make it a hobby , and maybe just maybe others will like it ...
I have seen way to many devs get god like status on xda for deodexing a rom and injecting voodoo in there kernel (for example)
i ve seen crazy talented themers have there work taken by others be ignored by the community and then vanished , and everyday we see a kik ass true developper on here and treat him like hes a nobody , because he doesnt have or because we havent heard of his rom .....
i completely understand where cm is coming form but my opinion differs slightly ..
@op kik ass thread (as I never read the front page)
Hard to build an i717 ROM from scratch with all of the proprietary bits, Samsung framework, etc, as most of that is proprietary as DAGr8 says. AOSP/AOKP works, but lacking some SPen functions and still relying heavily on a binary kernel as there are no kernel sources for ICS yet.
Hopefully the kernel situation changes, and we're back to the normal business of everything except the proprietary blobs that have to get copied from a stock ROM......
It'd be nice if all required code was released, but for some reason such things tend to be considered proprietary. Oh well.
Thanks OP. I also don't read the frontpage near often enough.
I like what Cyanogen is saying, and agree with his points from his developer point of view. I also agree with DAGr8 and his points. The fact is that Android gives us so many choices and has so many options for exploration. I think that's why so many of us have moved to the Android ecosystem. There is enough room for everyone. Android is the most prevalent mobile OS in the world for a reason. We can all have our opinions. We can all have what we want on our devices. And there are more and more people willing and able to jump in and try to build. Call them developers, or hackers, or derivators. It doesn't matter to me. They all add value to Android.

Development Talk

I know aosp is all open source and theres tons of places to download from. As well as many tutorials to do so. Though my question is, Why you people in general dont just repo sync the master branch and make modifications your self ? Understand the Android Architect layout? Getting knee deep in the development? Go to linux forums to build kernels unpack images etc? I love xda though but sometimes you have to go to the root and birth of Android. Which is Linux. I aint haten though you might not get as many errors if you follow directions to the tee. Everyone wants the easiest way possible well for some. I recently just got into Android development I've read multiple tutorials for various things and some were successful and others were not. On Linux forums and XDA I corrected them from going to the source Linux. Though we learn from trial and error. Though in my opinion knowing what is going behind the scenes is better then just clicking buttons and choosing options. i been into pc's for a long time and i know the difference between software and hardware. Obviously the kernel is the hardware in android development thats common sense. So compiling a kernel for your device and flashing it to a rom of choice will fix many issues. Thats just me. You'll just have to modify the kernel yourself. Basically what im sayn is learn learn learn google is your best friend XDA and Linux. Yes we all learn from eachother though sometimes its best to do it on your own.

Learning to make Android Apps - first steps

Hi All!
I want to learn to code Android Apps. I have no experience (aside from some BASIC coding back in school), but I have plenty of motivation.
I've found thenewboston website and the video tutorials looks really good, but they assume some coding knowledge which I need to get before proceding.
So, should I learn some C or JAVA first?
Or feel free to tell me otherwise.
I'd really like a plan of attack for the process of learning all this, as it's rather over whelming for a noob when presented with so much information and slightly differing opinions on what to learn first.
Thanks in advance.
Donald.
If you're focusing on Android 100% for now then pick up Java first. Also grab Android Studio as it's an excellent development tool that's replacing eclipse (Google is phasing out support for it later this year)
Sent from my XT1254
recommend the book "head first java"

Custom ROM builders, what would be your advice for someone learning the process

First of all, thanks to all custom ROM builders who have made the Android ecosystem diverse and rich. Even when the companies whom we pay for the device stop providing us with updates, your tireless works keep our cellphones alive and running.
Now, I would like to understand what goes into building a custom ROM. Here are my questions:
-> What kind of knowledge is prerequisite for starting such a project? For example, proficiency in C++, Java and an understanding of Linux kernel seems to be the basis of it. What else would you suggest?
-> Which tutorials, books or documentations would you suggest to learn the stuff? There are a few videos on Youtube, a few threads here, but sadly they seem to be out of date, and I guess Google has changed the Android system architecture drastically in recent years. Also, there seems to be a misunderstanding between building from source code, and modifying the source code before build. There are many which focus on the former, which is not that difficult of a project.
-> What kind of tools would make the whole process easier? There are a lot of tools like SuperR Kitchen, but are they used by actual devs? Or do the devs make their own tools for development?
-> What hardware specs would you suggest for Android system development? Is 16GB RAM enough, or is 32GB optimal? What about CPU: speed vs threads, which is more preferable?
-> How do you implement a new feature that doesn't exist in any current ROM? How do you, let's say, add a customizable lockscreen, or scrollable QS tiles?
-> When you start a ROM development, there is always an ethical question of stealing someone else's code. However, you have to start somewhere. Some ROMs say they are based on AOSP, or Lineage. How does the choice of base ROM impact the final product? How much do you copy code from a different custom ROM's source code?
-> Any other advice, suggestion or warning. Feel free to enlighten us.
Consider this thread to be a Q&A, where, if the devs are kind enough to participate in, we will get to pick their brains and learn from the process.

Categories

Resources