Getting Started with ROM Development - Galaxy Note II, Galaxy S III Developer Discussion

I've been around for a while, and flashing ROMs all the time, but I was wondering what it really takes in order to really get going with ROM development. I would really like to put together my own PAC/Rootbox/ReVolt-style ROM, but I don't really know where to get started. I have done a very small amount of Android app development, but I do have experience with Java. Does anyone have any pointers for where to get started, best practices, etc...?
Also included in this question should be this: I have a little experience with Github, but haven't really ever used it do pull requests, forking, and such, and I've only ever really used it for hosting my own projects. Is there a good guide on how to understand that type of stuff, as well as where to do builds, nightlies, and hosting? From what I've gathered from various ROM devs so far is that if you host on Goo.im, that will let you take advantage of GooManager for OTA updates, right?

drinfernoo said:
I've been around for a while, and flashing ROMs all the time, but I was wondering what it really takes in order to really get going with ROM development. I would really like to put together my own PAC/Rootbox/ReVolt-style ROM, but I don't really know where to get started. I have done a very small amount of Android app development, but I do have experience with Java. Does anyone have any pointers for where to get started, best practices, etc...?
Also included in this question should be this: I have a little experience with Github, but haven't really ever used it do pull requests, forking, and such, and I've only ever really used it for hosting my own projects. Is there a good guide on how to understand that type of stuff, as well as where to do builds, nightlies, and hosting? From what I've gathered from various ROM devs so far is that if you host on Goo.im, that will let you take advantage of GooManager for OTA updates, right?
Click to expand...
Click to collapse
As far as the github, you can fork the CM link directly for The GNote 2 as it's supported by them. If it were not you would have to fork a dev that has ported it over. Once you setup your box, ( there are numerous "how to compile custom roms" ) you can compile your rom. Easiest would be to ask somebody that has a "clean" (no customizations) CM build that you can use, and make your own mods. After that. It all counts on how good you are with coding and making your own mods. Hope this gets you started. Youtube and google are good places to start. I always refer Android Dev section for my repos and how-to's.

It takes, above all else, patience. start here
http://forum.xda-developers.com/showthread.php?t=1946481

Chasmodo dev gives me a link where you can see tons of guide and tutorials… good for noobs but also for advanced devs… I would like to compile an aosp for n5100 that is unsupported by cyano team at the moment… so I think that is too hard
http://forum.xda-developers.com/showthread.php?p=41491498
Inviato dal mio GT-N5100 con Tapatalk 2

Related

[Q] Porting the Honeycomb sdk - am i on the right track?

I understand that the sdk is nowhere near full featured, but now there are system dumps of the xoom, maybe helpful, right?
Well, i have never ported nor built a ROM before (done some theming and have no problem learning code). I came across these 2 port how-tos:
http://forum.xda-developers.com/showpost.php?p=11546129&postcount=76
http://android-dls.com/wiki/index.php?title=HOWTO:_Unpack,_Edit,_and_Re-Pack_Boot_Images
Is that all i really need to get HC to boot? The instructions seem extensive but not impossible or difficult.
Has anyone attempted this or gotten HC to boot on the g-tablet? I'm willing to take a crack at it if a dev could tell me whether i'm on the right track with the tutorials or do i need more knowledge.
When it comes to ROM building/porting, i gotta start somewhere. I've been around these forums for years and its about time I attempt to return the favor (hopefully without bricking my device lol)
Thanks in advance.
If this post needs to be moved, i'm sorry mods, but i figured this is strictly a development question.
Feel free to attempt it. There are people working on it and have come to the conclusion that source is needed plus a couple files from nvidia.
IMO porting the sdk is a complete waste of time tho. You would be much better starting off with a rom that will compile like froyo rather than starting with something that doesnt work yet
thebadfrog said:
Feel free to attempt it. There are people working on it and have come to the conclusion that source is needed plus a couple files from nvidia.
IMO porting the sdk is a complete waste of time tho. You would be much better starting off with a rom that will compile like froyo rather than starting with something that doesnt work yet
Click to expand...
Click to collapse
thanks for the insight. You're right, maybe froyo would be a good place to start so i could get used to the process on something that will compile. I'll probably give it shot in the next couple of days.
jump on the irc channel. freenode channel #tegratab. Lots of help and a willingness to help those that want to learn. I've compiled cm7 several times myself. Not my cup of tea but it was interesting.

Ok, I lied :-)

Ok guys, it's been brought to my attention that my post was
1. Cantankerous.
2. Seemingly disrespectful of devs great work on here.
3. Taken too seriously for being an internet forum.
I would like to say sorry, and explain what I mean I tihnk it would be awesome to pull together the necessary funding for our very talented developers to create an XDA exclusive, completely original ROM. I'm not sure if it is possible, but something that is just for the Thunderbolt alone and isn't sense, isn't AOSP, isn't MIUI, and DEFINITELY not like Motorboat... I mean Motorblur. I think we really are on to something with the work that the Dev's are doing with taking different roms and porting them/using other roms as bases and then building from them; lets see what we can do to completely change the way that this stuff is done(if possible) by polling ideas(not unreasonable wishlists) and putting it all together. Possibly coordinating between Team BAMF, Chingy, and some other the other recognized DEV's.
What does everyone else think?
htcdesirezgeorge said:
I'm not sure if it is possible, but something that is just for the Thunderbolt alone and isn't sense, isn't AOSP, isn't MIUI, and DEFINITELY not like Motorboat...
Click to expand...
Click to collapse
If it isn't sense/blur/touchwiz, it is AOSP. Miui is just modified AOSP (with no sources given back), just like all the other roms not sense/blur/touchwiz are also based on AOSP. You do know what AOSP means right? Android Open Source Project as in the android operation system that is the basis to all android phones just modded by the OEMs. What you're asking is similar to saying:
"Hey, I'm bored with linux, unix, osx and windows, can we make a new operating system totally not based on any of those for our computers?"
Perhaps rephrase your question one more time in a way that makes more sense? Third time is a winner
yareally said:
If it isn't sense/blur/touchwiz, it is AOSP. Miui is just modified AOSP (with no sources given back), just like all the other roms not sense/blur/touchwiz are also based on AOSP. You do know what AOSP means right? Android Open Source Project as in the android operation system that is the basis to all android phones just modded by the OEMs. What you're asking is similar to saying:
"Hey, I'm bored with linux, unix, osx and windows, can we make a new operating system totally not based on any of those for our computers?"
Perhaps rephrase your question one more time in a way that makes more sense? Third time is a winner
Click to expand...
Click to collapse
Ya got a point, I actually didn't know that! BUT, regardless of how its phrased, what do ya think it would require to do somethig like I mentioned? I, personally would love to see something excitingly new put out here. Like with the miui project, any chance of people putting their heads together to figure it out?
You've got OS's and you have UI's. Obviously it is entirely possible to custom build a UI, but its FAR more difficult than porting one over or mixing and mashing parts of Sense together. UberBAMF is definitely something new and out of the box. That's more radical than anything I ever expected... Or have ever seen elsewhere. UIs do a lot to sell a device, so its worth it for HTC or Samsung to invest in building one. Not so much for a team of volunteer devs.
htcdesirezgeorge said:
Ya got a point, I actually didn't know that! BUT, regardless of how its phrased, what do ya think it would require to do somethig like I mentioned? I, personally would love to see something excitingly new put out here. Like with the miui project, any chance of people putting their heads together to figure it out?
Click to expand...
Click to collapse
Chances are unlikely to get a new user interface geared to only one phone built from the ground up from the android source by a team for a few reasons:
1) Lack of like-minded (knowledgeable) developers for one device that are currently free. Developers are very opinionated (just from my own experience even if they don't want to admit it). What should/shouldn't go into it would be a mess to deal with and debate alone, especially since the opinions of developers are generally not the same as those that don't develop. The ones already developing most likely don't want to give up their current projects as well. Basically, the developers that want to develop already have their projects and most treat them like it's their "baby" and most likely not willing to give them up or put them on hold. That moves into issue #2
2) Time. It would take considerable amount of time and organization to do that. Probably to get something stable that's original would take longer than most people would keep their Thunderbolt. Guys that work on their phones do this part time for fun as well and that combined with other side projects would press for time.
3) True developers & designers. There's a big difference between hacking some already made stuff to work with things and actually writing object oriented software from scratch. Obviously some guys putting stuff out for the thunderbolt are true developers that code professionally and others are just hacking around making things work done by others. Both have their uses, but you need real development for something like this and I don't think there's enough of those willing.
Forgot to add that the only way change happens is to build interest, so don't let my pessimistic observations detour anyone from posting their thoughts and ideas in this thread

Cyanogenmod Info.

I've heard many things, all great, about CM since the beginning of time (...well, close to it.). Frequently, before a real android phone was obtainable via the average pathways here in the U.S. of A, and the iPhone was the only real option for a smartphone, I found myself pulled towards CM-even though I had no way of actually using it at the time. The open-source, power-to-the people feel has always appealed to me...and my journey, starting from the age of 12, when I started crashing my parents computer so I could spend more time with the boutique builder that would fix it, later fixing it myself, then exploring the down-and-dirty innards of my gadgets-- this journey, has always felt like home to me.
My personal tinkering with phones and the like started with my sisters HTC Tilt, which I skinned to look like an iPhone for her. This was one of the first phones with Wi-Fi (Ha!), and trying to get it work was just as fun as using it.
Moving on, I received, for my birthday, a palm PDA (one of the first with a camera and a color screen...the device itself was blue), but I had to return it due to an exploding display.
Finally, a couple years ago, I got my first smart-phone. An iPhone. And within an hour after getting it, I had it jailbroken and themed. But the innards were still off limits. While searching under terms lie? "Hack phone" and "tethering, I always came across posts speaking of Cyanogenmod...In fact, I'd say that an astounding 50% of my searches relating to customizing or modifying--in some way or another, led to a post or thread--sometimes a whole article, on how to do something with android, and specifically CM. This proved fruitful for my later endeavors.
When I was doing better financially, I bought my first android device, and have never felt so empowered, and have never had such a strong ownership of my devices. That device was the Transformer.
Again, after just an hour of owning the device, I was looking up terms...and searching XDA for every bit of relevant information I could find. Some of the questions I had: What is Clockwork Mod? What is Clockwork Mod Recovery? What's the difference? NVflash? What's a B70 serial number mean for my prognosis? What's a Nandroid? How do I choose a ROM?
Although there was a metric ten of terminology I needed to learn to know what I was doing--and even though there was almost a complete vacuum of centralized information--- at least authoritative information (any questioned asked in forums led to me being booted and marked as a noob), things eventually worked out.
I learned about the Boot loader situation for the transformer, the status of honeycomb as a sort of non-open-source open source operating system, and about the battery issues....about kernels, and speaker mods, about modules and root apps-and along the way I learned almost the full metric ton of terminology, and had a metric ton of fun...with you guys.
Which brings me to today...I own a brand new galaxy note, but am once again in the dark. Only this time, its far worse...because my questions pertain to CM, the gold reference when it comes to running a custom rom, and its structure...that is to say, the structure of the ROM, the team that builds it, and the community that helps support it...all relevant to understanding the dearth of work and choice that we find in this very forum. And because its been around for so long, the staple that CM has become, assumes that all things and all people know what's happening.
Which brings me to my real questions....which I've searched, and searched, and searched again for answers to, but have found no conclusive, or concise and relevant answers. I've searched the cyanogenmod site, the forum, this forum, and Google. And while I found half-answers, and although I'm confident I can root any device I, or my friends can buy, and I can install custom roms, edit props, change permissions, dump radios, flash pre rooted kernels and other kernels, and backup and edit every settings app and image I can find, I still find myself lacking a fundamental understanding of Cyanogenmod and Cyanogenmod work, official, and unofficial--information that would make my life complete, and help me bear the fruit of this journey I'm on.
That journey ends with a device that I own...one with cyanogenmod on it...specifically...a device in the near future that runs a version of CM that I helped contribute to-either officially or unofficially to.
And the beginning of the end to that journey, and the desired end game--developing, begins here. With my ASUS Transformer. And my questions.
Note: I illustrated this story in-depth, for a reason. To let you know that I've searched long and hard for clear answers, and that I plan to contribute significantly in the future to Android, and to XDA. I just need a teeny bit of help...a little direction. And so do a lot of us. I haven't found anywhere, a discussion of this subject--a significant one when it comes to understanding our community, our choices, and how to contribute...that subject is the structure of Cyanogenmod: the ROM, the team, and the community that constitutes them. The following questions are relevant to, and seek to address this fundamental lack of understanding.
Since the release of IcS, we've seen an explosion of CM in the Transformer forum. And while I understand how to read a change log, and a list of "what's working" and "what's not working", and can rely on a search find out what "Cornerstone" is, its still damn near impossible to define the relationship that constitutes all of the CM builds that are available. It might be clear, after a search, what the term "Kang" is, but what isn't clear, is what this means for the end-user. Its not clear what's official, what's parallel work, and what makes up the night lies that we can find on the CM repository. Is it one man aggregating work from forums like this, and throwing all of the features and fixes into a centralized build? Are the ROMs that we find in the Development section of the Transformer section off-shoots of CM to be worked on and differentiated in the future? Because where it stands now, I don't see a ton of differentiation. Maybe its because there's just been a new release, and I'm seeing the beginning of a process here. But I'm still unaware of what makes up a CM team. Its not clear how these things work-- if there is one man from the team working on the transformer, another working on the Epic 4g...and so on, or if everyone works on the same thing, and the feature or fix is distributed by a magic machine, or if each person on the team works on the same thing, and then a designated person ports it to his device. It's context like this that makes an informed overview of the current situation possible. And without that context, I'm stuck.
Most know that nightlies come before the release candidate(s), and that a stable release follows. But what I don't know, is why I never hear about an actual release, and almost always hear people speak of night lies, and in general, they're almost categorically excited.
So, if we were to examine my complete and utter lack of knowledge together, wed conclude that it's impossible for me to understand where XDA, and the ROMs that are available in the development section fit in to the grander-scheme of things. Is it better to get a nightly from CM? Is the nightly made up of the very fixes and developments we find in the various ROMs here in the development section?
How does someone go about deciding which of the dozen ROMs to install? Because the threads for ROMs don't explain anything when it comes to explaining an end goal, and a developers intent for the ROM, and the reasons why he/she is making one, I find myself stuck in the quick-sand of change-log after change-log, feature list after feature list.
Give me the 411. Explain to me what I'm missing in my Rosetta stone of the big picture..the grand scheme of things. Maybe I'm looking at this all wrong...maybe I'm just an idiot. Maybe you'll rage at me. But maybe, just maybe, I'm missing only, one small, key, piece of information here, and I spent a couple pages typing on the touchscreen of my transformer for thirty five minutes to find the answers that I badly need.
I'm sorry if I wasted your time. Thank you very much for reading this.
If you have a problem with my post, or a suggestion, attack, or complaint, please Private Message it to me...unless it pertains to the questions I posed...in which case I would very, very much appreciate your comment, your input, you sharing your knowledge, or even a question of your own.
Thanks.
Seriously? All that wall of text to ask the same question that everyone else asks?
This is how you divide up the custom ROMs to make your choice easier:
Do you want cornerstone or no?
If you want cornerstone, you pick between Team EOS or CM9
If you don't want cornerstone, you have these to pick from(in no particular order):
Revolver
Android Revolution HD
Codename Android
AOKP
CM9 no cornerstone version
Just try them and see what you like. I don't understand why people are so cautious before picking a ROM as if it's a permanent choice that can't be reverted.
If you don't like it, you can quickly flash a different ROM.
It's better for you to make your own decision based on your own experience with the ROMs rather than rely on someone else's recommendation whose needs and personal preference might not match yours.
Thank you, actually a nice read, there is also official cm support for our tf, on the cm website, last i seen there were 3 nightlies, since ics iv flashed the official cwm modded rom, then revolutiin, then team eos, then cm9, back to revolution, then codename android, now back on krakd hc rom until jcarrz releases his ics rom.
Sent from my R800i using xda premium
You gotta keep in mind that all ICS development now is in an early stage. Every rom is new, we don't have a solid stable one. Even stock asus have problems with rebooting, dock integration and so on.
CM is fragmented in 2 or 3 builds, and what diferentiates then is only the commits from CM repository and some dev preferences, like cornerstone or full support for the dock.
All roms that aren't Asus based (AOSP) suffers from some aditional issues, like:
- Dock won't be fully working, except on CM9 by ricardopvz and Codename Android. The touchpad still works different from stock asus.
- Some Wi-fi and GPS issues, probably driver related
- Screen rotation have a lag issue (all AOSP roms)
- Dock battery info missing, even with widget.
- Battery drain issues.
I have tested almost all roms and can say most of then is pretty usable. But if combined with overclock kernel, you can certainly expect problems.
[noobquestion]What is this cornerstone everyones talking about? lol [/noobquestion]
Im personally running team EOS nightly build (no cornerstone) with blade's OC kernel running at 1.4Ghz.
I think the ROM works very well. It hasnt really given me any issues except 2 random reboots and 1 semi-freeze (all on the same day lol). Its been running perfect for 3 days now though.
Don't worry about hondroid he is kind of a troll no hard feelings
I have not used CM for quite some time but here is my understanding from having worked with the captivate and transformer for over a year now.
Cyanogen mod is based off of the true source code of andorid taken directly from google and with no OEM's getting their greasy little fingers over them and polluting them with bloatware and skins. From there cyanogen set up a git repository where they have the main android tree as pure as it is and then branches for each device. Then there are plenty of devs working directly on the tree optimizing the core android and adding features which can then be accepted or regected by the otehr devs. Then there is a smaller team of devs on each "Branch" which normally consists of a certain type of processor or chipset. Ex Hummingbird or Tegra 2
The job of the devs there is to integrate that to make it work smoothly and they have the same peer approval system. There are also smaller branches which contain the drivers for most pieces of hardware (Speakers, Screens ect). Then finally there is the device dev there are normally about 5 from my experience but once all the work is done the team can be cut to 1 or 2. They are the people that get it up and running on the device writing missing drivers fixing device specific bugs ect. And once they are done there work they can compile it all together and there we have our nightly.
Then if there is a change in the core all the device devs have to do is recompile and build the rom and there is your next nightly.
The RC happens when they hit a stable nightly or when development has slowed enough that all of the bugs have been fixed
Hope this is helpfull
Thanks to all of your for your responses. I think this is a beautiful conversation that isn't happening enough. All of you have provided great information, that when combined helps to depict the structure of the community we have all grown to love.

Project RomView

Hi @all,
I'm posting this on XDA because I think most flash-a-holics "live" here and I'm sure most (if not all) of you know the problem.
You want to buy a new phone and you are looking for ROMs, check if the bootloader is easily unlockable etc.
As of now you have to do multiple Google searches and go through about 5 forums until you have found the answer you want.
Or you already have your phone and are looking for a new ROM.
So you're browsing the XDA section for your device and find about a thousand threads with ROMs and eventually you take one of the big ROMs you've already known since your first flash (speaking of CyanogenMod, AOKP, MIUI and so on)
So wouldn't it be cool (and I think it would) if all was just on one site easily discoverable and you were presented just the information you need?
That's what I'm trying to achieve with Project RomView.
I hope it's understandable what I mean.
Because I know it's quite impossible to do it all alone I'm looking for people (<10) who like the idea and would be ready to contribute in any form.
And please only if you really want to!
I'm looking for people who can do one of those things:
- Do UI/UX design.
- Code an Android app
- Have good knowledge about web-development (i.e. PHP, JavaScript,...)
- Know how to work with databases (preferably MySQL)
- Cook ROMs themselves and can help telling what they need to have in such a platform, so that they would offer their ROMs on it.
- and maybe some more people for beta testing and so on.
Or if you just want to give your own two cents, feel free to tell me what you think.
I'm looking forward to hearing every opinion (as long as it is constructive. If you just want to tell me that I suck, you can keep it for yourself, thanks!).
Cheers,
land.apfel
PS: I'm not sure if I'm in the right section. If I'm not, please move the thread. Thanks.
PPS: I have already achieved some very early progress but I don't want to give out anything else as of now.
Reserved (just in case)
Also reserved (just in case the first case is not case enough )
If you want i can help with graphic
Thank you very much for offering your help, but unfortunately I think it's hopeless to do any efforts as long as there aren't any developers who're ready to offer their ROMs on RomView.

New to Android ROM dev, have much kernel/driver development experience. Need protips

Hi, I started researching and messing with custom ROM/Kernel development 3 weeks ago. I've successfully compiled the kernel for my s5 neo Exynos 7580/MALI 200 (no hardware acceleration yet but I'm a kernel developer and reverse engineer so I can get that working given enough time, and have chosen all the apps I want to include in my first ROM. I made the ROM into and Odin flashable image and bricked my phone because I didn't adjust for the differences between the s7 and the s5 neo's power requirements. I bought 3 more S5 Neo's though, fixed the kernel, and all 3 devices have been 100% stable for 3 days with some minimal usage to test all the features. I am a kernel/driver developer, and as of now have taken over a dozen kernel MOD's from other people's kernels, and applied them to mine. There are more mods I could extract and apply, but I don't care to add them because I don't think they suit the goals of my ROM.
I would like to know things that aren't documented or easy to find that I will have to work with as I progress in the complexity of ROM development. So most of my ROM right now is apps I extracted from other ROMs and the play store and f-droid. But I am a coder and am working on my own settings app is suited for my ROM, including providing all the functionality of the root requiring apps I have installed now, also, I have about $80 of premium paid apps in my current setup, and want to put all the things they do into my custom settings app. I eventually plan on turning this into an android fork but for now, I'm starting out with baby steps to learn at a pace I can handle without overloading myself.
Please, any ROM/Kernel/App developers provide me any things you have learned from experience that I can't find on google and will be useful to know for my project.
Also, I have 2 questions. A) is UBER GCC better than Samsung eabi GNU compiler collection compilers?
B) Is deodexing really so good? because I've looked at the pros and cons and I don't think deodexing is worth the tradeoffs, but I feel like there's a reason almost every custom ROM does it. I know the tools to deodex ROM's don't work on Samsung android or other not AOSP based ROMS, but I already wrote a python script that deodex's my phone perfectly, I tried it, but I wasn't happy with the differences in response time and boot time and I believe it was causing a lot more memory to be used although I'm not sure why. Is deodexing better than I think it is, or is it just the cool thing to do for people who don't know how it really works?
Links, tips, polite criticisms, are all welcome. Also, this is my first post and I'm pretty sure these forums are the only place I can find people with the skill level to do these things well or at all.
I see some very knowledgeable people post here so I hope they find my post and reply with some tips. I tried the Freenode android channels and they are all plebs. They actually made fun of me for claiming I could make a custom ROM for this phone, they said it's impossible, and in 3 hours I had a screenshot of my about device showing my own compiled kernel running on my phone, no mods, just proof this been stuff is doable. Then I told them off about pretending to be experts but really knowing nothing and calling me a fool because they are too ignorant, then I left all 3 Freenode android channels and came here. In the channel for android ROM's and rooting, 99% of them were people who needed help rooting their phone or installing a custom ROM, not people I can learn from and grow to become a member of their community like I hope to do here.
if you didn't stop reading by now because of tl;dr, thanks for taking the time to read my post and please respond if you have helpful info. I've already read all the stuff I can find from google and these forums, I'm looking for the tips that aren't documented or that I may have written off as not important.
-zerorax, AKA Will O
Also if anyone wants to join forces to help me, I'm open to contributions and will give credit for them where it is due.

Categories

Resources