[Q] ROM Development Program Language - G2 and Desire Z Q&A, Help & Troubleshooting

I've been a member here for a short while but a frequent visitor for a long time. Recently, with the release of ICS I've become more interested in the work being done by ROM developers here, including a certain 15 year old doing a lot of work porting ICS.
I'd like to know what programming language is used in ROM development so I can maybe learn a thing or two and put in some work of my own.
EDIT: Posted this here because I own a G2 so if languages are different depending on phone, I'm obviously more interested in how to do work on my own.

C, C++, and Java.

Related

[UPDATED 02/18/10] A call to all chefs!!!

Hi there!
There are members here who have successfully cooked for the Vogue with each one using the kitchen that he prefers, while there are many others who have researched for hours and still have trouble setting up a kitchen.
Anyone who tried to do this without prior knowledge surely remembers how much effort is needed to learn all the steps, since the cooking process is quite complicated and there are many new things to learn. Even if one managed to setup a kitchen he might still have no idea how to port a new build to the kitchen. I have also found it difficult to learn what exactly do you need to keep from the original ROM that was shipped with the device and which of those old files can we get rid of. And the list goes on and on...
Many would love to enjoy the thrill of building their own custom ROM with the programs that they find useful, and to be able to tweak it the way they prefer.
I'm calling here on all of you who have experience cooking for the Vogue to please share your knowledge here.
If you have a kitchen setup that you would like to share, I'm sure that many members would love to make use of it!
See post #18 for a description of ROM XIP SYS OEM and LANG. Thanks to egzthunder1.
UPDATE 02/18/10
From my own personal experience and as others have mentioned in the first few posts of this thread, the easiest kitchen for a new chef is the PPCKitchen.
STEP 1: You can register at ppckitchen.org and download the latest version of the kitchen. After installing the kitchen you will need to run the updater. It will take a few seconds while it connects to the server. After that you will have an option of downloading different files. In order to cook a working ROM you will need to go to ROM Kitchens\Vogue and download the following Vogue Carrier Kitchen files, Vogue Kitchen Core, Vogue Drivers. (I don't believe you need Generic OEM Kitchen files in the above directory). Of course you will also need at least one of the Windows Mobile builds from the same directory (ROM Kitchens\Vogue).
Although the builds that show up in the updater are pretty new, yet the latest builds will not show up. In the future after having successfully cooked a ROM with one of the more stable builds from the updater, you can go get the latest builds from the PPCK website at Windows Mobile Build Discussions\Test SYS Builds. *Advanced PPCk Users only*. For now I would stick to the builds that show up in the updater.
There are also OEM files that you can download with the updater. These files have different programs that you will be able to add to your ROM. You can download PPCKitchen OEM's, PPCKitchen 240x320 OEM's, Non Freeware OEM's (don't get exited it's only a trial!), and User submitted OEM's. You don't need any of these so you can download them and check if you want the programs that's inside, if not you can delete the whole file from your kitchen folder that's in your PPCK folder.
The kitchen is very easy to use and you can now build a basic ROM.
I hope to add more to this mini tutorial within the next few days.
I agree 100%, I think it would be great if some of the experienced chefs could drop some knowledge on the rest of us, if not only so we can keep pumping out new ROMs for our Vogues.
Head over to PPCKitchen.org they have a tutorial and everything you need to cook roms, its also the easiest to use in my opinion.
As you may have noticed over the past few days, I have been trying to keep the forum a little cleaner by asking people who open new threads with questions to simply ask them in a sticked Q&A thread. This request also falls under that same premise. Please do not open new threads asking questions. Threads should only be opened to contribute to the site (roms, kitchens, skins, guides, apps, etc). Thanks.
Barogi44 said:
Head over to PPCKitchen.org they have a tutorial and everything you need to cook roms, its also the easiest to use in my opinion.
Click to expand...
Click to collapse
I also have been using the PPCkitchen and agree that it's the easiest, but I have found that it's also somewhat limiting and think it would be a good idea if those using the Ervius VK or any other kitchen would be able to help others.
egzthunder1 said:
As you may have noticed over the past few days, I have been trying to keep the forum a little cleaner by asking people who open new threads with questions to simply ask them in a sticked Q&A thread. This request also falls under that same premise. Please do not open new threads asking questions. Threads should only be opened to contribute to the site (roms, kitchens, skins, guides, apps, etc). Thanks.
Click to expand...
Click to collapse
Sorry, didn't mean to make a mess while your trying to clear things up. It must be frustrating, sort of like cleaning up the floor and having somebody walk in tracking dirt on the freshly cleaned floor!
I just thought that this would be a Tutorial type of thread where members could come and add their little bits of knowledge until we would have a lot of info gathered in one spot. Personally I still think that it's not another simple Q&A thread, although your welcome to disagree and to remove this thread if you want. I'm still hoping that this thread will become a guide for all newcomers to cooking.
When I get home tonight, I will give you a heads up on how i use PPCKitchen. I cook for personal use only and don't publish roms. In short, all I do is use is a modified version of Vin's Generic_OEM. By modified, I take out things I don't need and insert things I want. When I used to flash manila roms, this was critical as his MANILA folder has every thing needed. Now that I don't use MANILA (I replaced it it SPB Mobile Shell 3.5.3 (I LUV IT!). When a new WM build comes out, I simply pop them files in the appropriate places and run it. I am currently in love with 23529.
If your interested in what I'm doing, you can start by downloading Vin's Generic_OEM from his 28014 Thread. Just search for Generic_OEM in the thread.
Lewy1 said:
Sorry, didn't mean to make a mess while your trying to clear things up. It must be frustrating, sort of like cleaning up the floor and having somebody walk in tracking dirt on the freshly cleaned floor!
I just thought that this would be a Tutorial type of thread where members could come and add their little bits of knowledge until we would have a lot of info gathered in one spot. Personally I still think that it's not another simple Q&A thread, although your welcome to disagree and to remove this thread if you want. I'm still hoping that this thread will become a guide for all newcomers to cooking.
Click to expand...
Click to collapse
I know what your intentions were and I do not disagree with you. But there are a few things that need to be considered for making a "cooking guide" for this particular section of the site...
*There are only 3 (4 at best) active chefs for this section: Nag, Barogi, vin (if he decides to fully return), and myself. I believe that NFS will not return (personal unfounded belief).
*Most of the above chefs use PPCK. I am not saying that they don't use others like VK, but the info on cooking will be pretty much the same that you can find in the PPCK website.
*There are a slew of tutorials floating around the site (not just the Vogue section, but throughout XDA), which have a lot (and I do mean a lot) of information on how to cook.
*Cooking with other kitchens is far more involved than simply dropping build packages into PPCK. You can even get down to the nitty gritty of hex editing your rom to get more stuff out of it (ie, there is a hex change in the BA roms that allow you to have more ram available).
*Lastly, since the Vogue uses newer style roms (nbh, as opposed to older formats like nbf), learning how to cook from scratch would be kinda a waste of time (believe me, I spent the last month learning how to port a newer rom to the Blue Angel and it isn't as simple as you may think).
One of the mods (I can't remember which one right now) has a series of posts with tools, tutorials, and a bunch of other things needed to cook. What we could do is simply make a one or two post sticky with the links to the different tutorials on xda as well as on other sites (ppcgeeks has a 1100+ pages thread that talks about cooking and porting). I will see if I can get my hands on those and get them in here if that is ok with you.
egzthunder1 said:
One of the mods (I can't remember which one right now) has a series of posts with tools, tutorials, and a bunch of other things needed to cook. What we could do is simply make a one or two post sticky with the links to the different tutorials on xda as well as on other sites (ppcgeeks has a 1100+ pages thread that talks about cooking and porting). I will see if I can get my hands on those and get them in here if that is ok with you.
Click to expand...
Click to collapse
Thanks, that's perfectly fine with me. I have seen most of the stuff that you mentioned and was actually thinking along the same lines as you. If I can I will add my own little bit of knowledge like links to the various kitchens and so on. By the way there is a new kitchen, Oskitchen with new UI by airxtreme (original kitchen by Ondraster). It looks like it will be easy to use and has just been modified for the Vogue, and I'm hoping to give it a try tonight.
Lewy1 said:
Thanks, that's perfectly fine with me. I have seen most of the stuff that you mentioned and was actually thinking along the same lines as you. If I can I will add my own little bit of knowledge like links to the various kitchens and so on. By the way there is a new kitchen, Oskitchen with new GUI by airxtreme (original kitchen by Ondraster). It looks like it will be easy to use and has just been modified for the Vogue, and I'm hoping to give it a try tonight.
Click to expand...
Click to collapse
Yes, I did see that one. I had tried oskitchen before and it isn't too bad (still preferred Ervius though). However, this new UI seems a little more user friendly...
Start out with PPCK. It works well, most users will not notice the limitations.
Biggest thing with making your own ROM's is getting all of the Reg edits that need to be included.
Good Luck! PS Start with build 23529 it seems to be really stable and fast!
First post updated with mini tutorial.
Lmiller1708 said:
Biggest thing with making your own ROM's is getting all of the Reg edits that need to be included.
Click to expand...
Click to collapse
Perhaps we can use this thread to gather up those types of regedits in one place. It would also be good to have guides for new cooks on how to add things like EzInput 2.1 (with working vibration) and Long Press End Key, BT Pan and Alarm functionality (while plugged in). Most of the newer roms have old or incomplete implementations of these features. vin was the last person to get many of these features all together in one place. With the age of the Vogue many of the cooks are trading up to newer devices and much of that knowledge is getting lost.
codf4ther said:
Perhaps we can use this thread to gather up those types of regedits in one place. It would also be good to have guides for new cooks on how to add things like EzInput 2.1 (with working vibration) and Long Press End Key, BT Pan and Alarm functionality (while plugged in). Most of the newer roms have old or incomplete implementations of these features. vin was the last person to get many of these features all together in one place. With the age of the Vogue many of the cooks are trading up to newer devices and much of that knowledge is getting lost.
Click to expand...
Click to collapse
Are you talking bout me ?
egzthunder1 said:
Are you talking bout me ?
Click to expand...
Click to collapse
No sir, not trying to single anyone out. I've tried pretty much every rom released here and on PPCGeeks I haven't tried your latest ones labeled MetroPCS. I'll flash you latest tonight and try it out for a few days.
just uploaded 28230. Try that one and let me know if you like it...
btw, I was joking... don't sweat it. I don't get so easily offended
tharris297 said:
When I get home tonight, I will give you a heads up on how i use PPCKitchen. I cook for personal use only and don't publish roms. In short, all I do is use is a modified version of Vin's Generic_OEM. By modified, I take out things I don't need and insert things I want. When I used to flash manila roms, this was critical as his MANILA folder has every thing needed. Now that I don't use MANILA (I replaced it it SPB Mobile Shell 3.5.3 (I LUV IT!). When a new WM build comes out, I simply pop them files in the appropriate places and run it. I am currently in love with 23529.
If your interested in what I'm doing, you can start by downloading Vin's Generic_OEM from his 28014 Thread. Just search for Generic_OEM in the thread.
Click to expand...
Click to collapse
I don't know if you sent this over via PM but I'd be interested in reading it too. I tried replacing the Generic_OEM.rar in the kitchen folder with the one from vin, but the kitchen won't startup after i do that.
codf4ther said:
I don't know if you sent this over via PM but I'd be interested in reading it too. I tried replacing the Generic_OEM.rar in the kitchen folder with the one from vin, but the kitchen won't startup after i do that.
Click to expand...
Click to collapse
The reason is that Vin's packages are not "kitchen ready". What he posted is in essence a dump of the Mega rom. The packages have to be worked on in a one by one basis to get them to work with PPCK. There is a nice guide on how to do that in the forum at PPCKitchen.org.
Hey Lewy1,
You are off to a good start. I have been giving your idea some thought and if you truly want this to be a "learning resource" for new chefs, you may want to start by describing a few basic concepts as well.
[highlight]ROM[/highlight]
In essence the Operating System with all the necessary files and programs that make up for what you have on your device. This contains things that are general to all devices as well as certain files and folders that are specific to each particular device (hence, the reason why you cannot flash a rom from a Blue Angel into a Vogue and vice-versa). Once a rom is obtained by dumping it, the dump will have a bunch of folders and files, which need to be turned into something "cookable". There exist several applications that can (and must be used) in order to accomplish this.
After all the things in the "dump" are sorted out and manipulated, the rom will essentially turn into 4 main parts: XIP, SYS, OEM, and Lang packages.
[highlight]XIP[/highlight]
The XIP is what holds the core of the OS. This is what holds the Native Kernel of the particular device as well. In order to port a rom to a device, one cannot simply replace the XIP with a new one. The XIP of the new OS must be "implanted" into the XIP of the base rom of the device. The reason for this is that there are many files that can simply be replaced in the XIP, but some must remain untouched as they hold key elements for the proper functioning of the device (Native Kernel).
[highlight]SYS[/highlight]
The SYS folder will have packages with software that the device may or may not need to run properly. This holds things such as the Shell (your UI), Office, core applications, etc. A lot of these packages can be removed from the SYS in order to make space for other apps that the chef maybe interested in having. However, great care must be taken when removing/adding packages since some packages are needed for the device to even be able to boot. Likewise, having too many packages will render the rom un-flashable since most devices have a specific size of rom that they cannot go over. In the case of latter devices, the available space for rom has gone up dramatically. For instance, the Vogue has roughly 90 MB of space for the rom. This is more than plenty to cook a lot of apps without too many issues. There are older devices such as the Blue Angel, where the size of the rom is limited to 32 MB, which forces most cooks to remove packages and compress things as much as possible to even have a bootable rom (keep in mind that most of the time, builds are coming with more and more space requirements).
On top of all this, there are the resolution requirements. Most packages will come with a second folder of a similar name with the resolution added. For example, Base will have another folder called Base_96DPI. The chef will have to be careful on what he/she puts to be cooked as having different resolution packages can make the device either not boot, or look weird (out of scale images) if it does boot
[highlight]OEM[/highlight]
The OEM normally holds fixes and programs that the cook could not fit in the SYS. It also hold drivers, sometimes even Language packs among other things.
[highlight]Lang[/highlight]
These are language and location specific modules. The chefs use the location modules to make roms for different languages and locations. It is usually a four character code that determines which country/language the rom is made for. For instance, 0409 is WWE.
There are many other basic concepts (such as Virtual Memory allocation) that could be discussed, but for now, these basic definitions should help the average person understand what they are dealing with when they see a new set of packages coming out on PPCK,
Hope this helps the cause
egzthunder1 said:
Hey Lewy1,
You are off to a good start. I have been giving your idea some thought and if you truly want this to be a "learning resource" for new chefs, you may want to start by describing a few basic concepts as well.
Click to expand...
Click to collapse
Thanks! Great Info I'll add it to the first post.

Interested in Developing in free time

I just recently decided that I have had enough of WinMo on my tilt2 and opted to see how the development of Android OS was coming along for the phone. Not surprisingly, it has developed a lot since I first picked up the phone in December and first thought of the idea of placing Android on the phone.
To my point-- I have some programming experience and would be interested in learning the language behind Android. Obviously it is linux based, but is that the only thing I need to know?
Does anyone know what I need to know to get started?
Links to appropriate sites with details on the language is really what I am looking for. Thanks to any and all that will help (not looking for trolls, get enough of those from other sites).
I too am learning linux, I've had to use linux commands for over a year now as I also own a G1 and you often (when rooting) need to go into a terminal to make changes. I unfortunately don't know much of the language required to create or change much of the android OS I only know the file structure and how to change that. If I were you I would jump over to http://www.android.com download the developers kit which comes with an android emulator and they have lots of tutorials and demo apps for the android OS. It won't do much as far as help you modify the system but it's a good place to get started.
Hope this helps and if you have any questions about the things I do know, feel free to ask me
androidonhtc.com/wiki/Get_Involved[/url] you can try this.

[Q] Android Development

I'm interested in doing some development for android. I'm just not sure where to start. I see a ton of books on Amazon.
I'm just wondering what would be recommended for an absolute beginner. I know my way around a computer so i don't need it that noob'd down.
I think i would like to play with some apps, and eventually move to Kernels and Roms.
What you you recommend?
Probably the best way to start is to learn Java (the main coding language for apps and userspace), and C (the main languages for kernelspace stuff). After that, messing with the App Inventor would be the place to go.
Search dsixda very helpful thread
Sent from my PC36100 using XDA App
i was thinking of learning some basics of android app development and coding with a very basic walk through so that i can fully understand what i'm going to be able to use the Java code in particular applications. Would this be a bad strategy.
As a software developer, I would recommend spending a couple weeks getting the basics of Java and object-oriented development down. Do a few sample apps in Java. Once you've done that, try Android. I'm afraid that learning to code, learning Java, and learning to develop for Android all in one may be too much for someone.
You really need to have the basics of Java and object-orientation down, then take on Android as it's not altogether simple, particularly for someone who's just learned to code.
As far as kernel/ROM development, I'm guessing C and Linux shell scripts are the things to learn there. If you want to write Android apps, do as I've mentioned above.

[Q] APP Developer Turned ROM Maker, How Big's the Leap?

So, I have a T989D and I'm a budding Android developer (almost finished my first major release). Once my first app is released to the masses, I will have plenty of time to develop ROMs while I'm updating my app.
This being said, I know absolutely nothing about ROM development, but quite a bit about the Android framework, java, etc. etc. I assume most ROM development is cracking open the source and tweaking to your hearts content, however, there must be some very specific things which I'm not sure my skills will translate into effectively?
So, what I really want to know from other Developers turned ROM makers is, how much of my skills are transferrable and what are the quirks/pitfalls I'm going to have to learn?
I'm quite excited to get involved and develop some ROMs for this phone, a nice kickstart would be appreciated.
Thanks!

Sage Advice from Cyanogen Still Valid Today

If you’ve spent any amount of time on XDA, you’ve heard of XDA Recognized Developer Cyanogen or the nearly ubiquitous CyanogenMod. In fact, chances are that at you’ve either run CyanogenMod on one of your devices at some point in the past, or you’re running it (or a kanged version) now. In many ways, CyanogenMod represented all that was good about Android Open Source Project (AOSP) and proceeded to go where the carriers and manufacturers were unwilling to take their devices. Along the way, Cyanogen inspired developers everywhere to reach for what was previously lacking in the Android community.
Cyanogen also saw an emerging trend which he wasn’t too happy about – the term “chef” being applied to the Android custom development scene, along with the emergence of the so-called “WinZip ROM.” So he created a thread back in 2010 to speak to this emerging trend and offer up some advice. The overriding theme was that contributing quality was far more important than contributing quantity on XDA.
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.
Here are some locations to help you on the path to learning about Android and contributing to the community as a whole:
Android Developer Guides
Working with Android Source
Downloading the Android Source
Git Tips and Tricks
Building CyanogenMod
Pro GIT Book
source : http://www.xda-developers.com/android/sage-advice-from-cyanogen-still-valid-today/
original source : http://forum.xda-developers.com/showthread.php?t=667298
Well put and a great reminder for all.
Side note - What is with all the "reserved" posts? This has to stop, its just spam. I will delete all posts on sight and repeat offenders will have their ability to post removed.
Sorry to divert the topic.
andyharney said:
Well put and a great reminder for all.
Side note - What is with all the "reserved" posts? This has to stop, its just spam. I will delete all posts on sight and repeat offenders will have their ability to post removed.
Sorry to divert the topic.
Click to expand...
Click to collapse
moved and cleaned...nice..
i was also curious of the so many reservations
anyway, the message is clear..
Dev = Creator(File Pusher)
Chef = Indirect Piracy? LOL
For the chef thing is my opinion since its just improvising, not really creating

Categories

Resources