Yesterday, I decided to start giving back to the XDA Community by learning how to and building a rom. Being a beginner, I thought it would make most sense to simply Compile AOSP from source. Already, I have met a huge roadblock. A lot of the guides out there instruct you to get the proprietary binaries for the device. However, they Use nexus devices, and I can't seem to find these binaries for the HTC One. Is there anyone out there who can help me stumble my way to compiling AOSP for the HTC One?
Thanks,
Mihir
not the proper section should be in q&A
You probably want this
https://github.com/TheMuppets/proprietary_vendor_htc/tree/cm-10.2
Related
im so in the mood to learn and make some roms....i wanted to ask can somoene help me by guiding me or maybe linking me to the right direction because i really want to customize roms...not too hard but to be able to tweak a bit on roms...pleae can someone help???
I'd recommend starting with going to the Android Open Source Project. They have full docs on how to download and compile the source code. Once you've successfully built a stock image you can start mixing and matching or tweaking code.
You can also Google things like "building froyo source" and such to find tutorials. Many of those will be for specific phones but the general principals are similar.
If you want to jump in the deep end Cyanogen's wiki has a tutorial on building Cyanogenmod from source.
Sent from my Nexus One using XDA App
ok thanks alot!
Let's say that I wanted to get into android rom development, what would be a good place to start to learn. I've downloaded several e-books about android development, but they all pertain to writing applications for android OS, not really getting into modding the OS itself. I suspect I'd need to learn about linux then translate that knowledge to android?
Anybody have any good places to start or good reference materials?
It appears that none of the cyanogenmod team is even going to do anything with the Captivate, they're all working on I9000 and Vibrant, totally ignoring the Captivate. So, I thought I'd get in there and try and learn.
Building Android from source - their own site is the best for instructions on how to build android: http://source.android.com/
Building Captivate requires downloading the sources, building the kernel using the build_kernel.sh after you've fixed the toolchain paths. Or you can just use the usual linux kernel building method that the script actually does underneath.
Then you need to build eclair (or froyo). Samsung has opensourced most of the code but not all so you need to figure out how to merge vanilla eclair source into Samsung's tree, and build it. There is a readme in the source from Samsung about what to change in the build files.
You're going to be doing a lot of googling . . . I haven't figured out all the details of the Samsung eclair build so you're on your own there. Maybe others can chime in.
-Atin
atinm said:
Building Android from source - their own site is the best for instructions on how to build android: http://source.android.com/
Building Captivate requires downloading the sources, building the kernel using the build_kernel.sh after you've fixed the toolchain paths. Or you can just use the usual linux kernel building method that the script actually does underneath.
Then you need to build eclair (or froyo). Samsung has opensourced most of the code but not all so you need to figure out how to merge vanilla eclair source into Samsung's tree, and build it. There is a readme in the source from Samsung about what to change in the build files.
You're going to be doing a lot of googling . . . I haven't figured out all the details of the Samsung eclair build so you're on your own there. Maybe others can chime in.
-Atin
Click to expand...
Click to collapse
Thanks. Thats what I'm talking about, a lot of what you said seems Greek to me. I'd like to learn how to do all that. I guess, just read a lot from the google source website?
My advice would be to first learn how to go muck in the linux kernel and the Android sources in general. The Captivate code has been hacked some by Samsung so it doesn't quite follow all the rules about where files are supposed to go (there is no vendor tree for example) but at least it is a start. The google source site is the best for instructions on how to do vanilla stuff that's not hardware specific. Google around for more specific instructions related to the particular problem you are trying to solve after that.
Building working stuff at this level isn't easy. Unless you are somewhat experienced or willing to spend a lot of time learning and making mistakes, I'd say leave this to people who have some experience at this level and come back to it when building for the Captivate is well understood and the knowledge has been distributed enough so lots of people can help you when you have specific questions (no one likes answering general "how to" stuff on a device specific thread).
-Atin
Hey Guys,
I'm a developer for a living, and I'm interested in possibly working on a custom rom for my captivate. I was doing some research on how to get started, but the stuff I found was for HTC phones and involved using a starter that only works for HTC stuff.
Where can I go to find information on doing this? I'm largely interested in trying to port gingerbread, but my understanding was that until we have the full source this wasn't really possible (at least for something actually useable on a daily basis). I see supercurio is working on gingerbread, so information specific to this would be really helpful.
Thanks guys, and sorry if this should have been put in the QA section, I figured it was related to development, and could possibly be a sticky if it leads to useful info.
Pretty broad question. First requirement, is obviously...learn java.
I'm not sure if there's any specific "HOW-TO CODE YOUR OWN CAPTIVATE ROM" threads anywhere; there's general information available on http://developer.android.com , but modifying ROM's depends on the device it was written for.
As far as porting gingerbread, it will be very difficult without source and will definitely require quite a bit of kernel work. For information specific on this, supercurio would be the one to ask. Of course, the IRC's are also a great place to get information.
By the way, welcome to XDA! And I commend your motivation to develop stuff for the community here.
http://forum.xda-developers.com/showthread.php?t=869614
Doc over in the I9000 forums has the above thread started. I look there.
geokhentix said:
Pretty broad question. First requirement, is obviously...learn java.
I'm not sure if there's any specific "HOW-TO CODE YOUR OWN CAPTIVATE ROM" threads anywhere; there's general information available on http://developer.android.com , but modifying ROM's depends on the device it was written for.
As far as porting gingerbread, it will be very difficult without source and will definitely require quite a bit of kernel work. For information specific on this, supercurio would be the one to ask. Of course, the IRC's are also a great place to get information.
By the way, welcome to XDA! And I commend your motivation to develop stuff for the community here.
Click to expand...
Click to collapse
Again, I am a developer for a living. I know Java, I'm not looking for coding tutorials. I'm looking for information specifically regarding the captivate.
As far as gingerbread, it sounds like what you are saying is that what people like supercurio are working on is not really gingerbread? More of a Frankenstein created with the sdk, mashing together 2.2 kernels and what has been released for 2.3?
lbbo2002 said:
http://forum.xda-developers.com/showthread.php?t=869614
Doc over in the I9000 forums has the above thread started. I look there.
Click to expand...
Click to collapse
Looking at that thread, it appears the roms being made are just edited versions of already compiled roms? Is samsung not required to post the full source of their roms?
I'm assuming the issue with starting with the original android source, is that we wouldn't have drivers for half of the hardware in the phone. Is the only choice then to load the already compiled drivers from the samsung builds into the rom?
epoplive said:
Again, I am a developer for a living. I know Java, I'm not looking for coding tutorials. I'm looking for information specifically regarding the captivate.
As far as gingerbread, it sounds like what you are saying is that what people like supercurio are working on is not really gingerbread? More of a Frankenstein created with the sdk, mashing together 2.2 kernels and what has been released for 2.3?
Click to expand...
Click to collapse
There are different levels of making ROMs IMO.
You can combine work from others and make your own ROM. This requires no coding experience. For instance, I took JH7_OTA, dropped in Atinms Voodoo 3 kernel, removed bloatware, added my own custom framework (icons), etc., signed it and flashed it.
Then there is the whole Kernel side of things that requires an entire development environment (Linux) and C/C++ programming skills. I'm trying to get to this point. You can start by downloading the source and building it in your own environment familiarizing yourself with the codebase.
Indeed. Packing a ROM and making the contents of the ROM are two different sides of the spectrum. Even some minor framework modifications can be performed by the most tech-inept, as long as they have a good resource to work off of.
epoplive said:
Again, I am a developer for a living. I know Java, I'm not looking for coding tutorials. I'm looking for information specifically regarding the captivate.
As far as gingerbread, it sounds like what you are saying is that what people like supercurio are working on is not really gingerbread? More of a Frankenstein created with the sdk, mashing together 2.2 kernels and what has been released for 2.3?
Click to expand...
Click to collapse
I was only prodding fun when I mentioned learning Java, just to break the ice. All I'm saying is trial and error is the best way to learn Android if you're already a decent programmer. Without knowing what the source code looked like before Samsung owned it, we don't really have a base environment to work off of, which means we are modifying work that was already modified from stock; which is why it will be pretty hard to find a lot of definitive coding information about the Captivate.
Supercurio isn't making a frankenstein 2.2-2.3 hybrid. The kernel is where all of the information about your hardware resides. Supercurio needs to take the Gingerbread kernel from the Nexus S, and modify it to run with our hardware. You can't run a 2.3 ROM without a 2.3 kernel; so we CAN'T use a 2.2 kernel to run full gingerbread; and since a 2.3 kernel doesn't exist for the Captivate, he is using the Nexus s's kernel as a base, or as a reference to merge the differences between the two, creating a kernel that will support the Nexus S ROM on a phone that isn't the Nexus S.
epoplive said:
Looking at that thread, it appears the roms being made are just edited versions of already compiled roms? Is samsung not required to post the full source of their roms?
I'm assuming the issue with starting with the original android source, is that we wouldn't have drivers for half of the hardware in the phone. Is the only choice then to load the already compiled drivers from the samsung builds into the rom?
Click to expand...
Click to collapse
Correct. We don't have the source code for Froyo yet for the Captivate(or an OTA for that matter ), a lot of ROM's being made are based off of the SGS I9000 2.2 source, and because we have that source, we have a pretty much fully functional "captivated" i9000 kernel.
geokhentix said:
Indeed. Packing a ROM and making the contents of the ROM are two different sides of the spectrum. Even some minor framework modifications can be performed by the most tech-inept, as long as they have a good resource to work off of.
I was only prodding fun when I mentioned learning Java, just to break the ice. All I'm saying is trial and error is the best way to learn Android if you're already a decent programmer. Without knowing what the source code looked like before Samsung owned it, we don't really have a base environment to work off of, which means we are modifying work that was already modified from stock; which is why it will be pretty hard to find a lot of definitive coding information about the Captivate.
Supercurio isn't making a frankenstein 2.2-2.3 hybrid. The kernel is where all of the information about your hardware resides. Supercurio needs to take the Gingerbread kernel from the Nexus S, and modify it to run with our hardware. You can't run a 2.3 ROM without a 2.3 kernel; so we CAN'T use a 2.2 kernel to run full gingerbread; and since a 2.3 kernel doesn't exist for the Captivate, he is using the Nexus s's kernel as a base, or as a reference to merge the differences between the two, creating a kernel that will support the Nexus S ROM on a phone that isn't the Nexus S.
Correct. We don't have the source code for Froyo yet for the Captivate(or an OTA for that matter ), a lot of ROM's being made are based off of the SGS I9000 2.2 source, and because we have that source, we have a pretty much fully functional "captivated" i9000 kernel.
Click to expand...
Click to collapse
Ah, thanks, that's pretty much the information I was looking for.
Hi everyone!
I'm looking to become a future dev of the Samsung Captivate Glide, but as we're awaiting the official ICS from AT&T the forum right now is pretty dead. We have a project going but nobody to guide us, and we wish to compile CM9 or AOSP ICS. Would anyone take me in and teach me the basics of ROMing? I would greatly appreciate it! I have a Mac and Windows, I'm not sure if Linux is required :|
~Aquethys
the rom is the least of the worries to get dev going on your phone, getting the kernel going is the hard part. does your phone have the source code released?
I don't believe so, people in our ics port thread are saying we don't have a working ics kernel. We do have a gingerbread kernel though... :/
How would I start?
Sent from my SAMSUNG-SGH-I927R using xda premium
well you take parts from the GB kernel and apply it to parts from the AOSP kernel, and troubleshoot until it boots. then you troubleshoot all the other issues, there will be issues, then you can start doing fancy things like add cwm. then tweak the kernel....
start reading on kernels, ramdisk, rils, libs, and drivers, linux, compiling, AOSP, github repositories.
you might be ready to take on this task in 6 months.... minimum
dont take that as snooty, ive been on here over a year, and know jack squat about half the things i just told you to study. though i have no desire to build kernels myself. there is lots of great info scattered all over xda. but you will need an experienced dev, to port ICS. you need to know basic kernel modification stuff before trying to do something as big as porting a new android version from out your but.
automated compiling isnt as automated as it sounds.
Alright. What programs will I need to begin with? Hopefully an experienced dev can guide me, I'm not too good @ following guides/tutorials but I'll try my best!
Sent from my SAMSUNG-SGH-I927R using xda premium
EDIT: Made a dropbox account, hopefully you could guide me through the basics?
So, is this the source code for SGH-I927 you were talking about? I downloaded it, what do I do with it? Is it different for ICS and GB?
I've done some searching and found many dated and non-specific references on building AOSP for your device. I didn't even find anything referencing lollipop. I was wondering if somebody had written up some device specific instructions for the m7. I'm looking for information like pulling in the correct binaries and kernel source.
91ludesit said:
I've done some searching and found many dated and non-specific references on building AOSP for your device. I didn't even find anything referencing lollipop. I was wondering if somebody had written up some device specific instructions for the m7. I'm looking for information like pulling in the correct binaries and kernel source.
Click to expand...
Click to collapse
Which ROM are you looking for? I found the instructions for building CyanogenMod for the Nexus 6 to be helpful when I rebuilt CM7 for the original Droid Incredible. I don't see any reason it can't be extended to the M7 and lollipop--I can indicate the appropriate changes, if that's helpful.
wiki.cyanogenmod.org/w/Build_for_shamu
I'm just wanting to build straight from aosp with maybe a custom kernel source.
91ludesit said:
I'm just wanting to build straight from aosp with maybe a custom kernel source.
Click to expand...
Click to collapse
Ah. Well, I'm not an expert by any means, but I don't think it's quite that straightforward. The Android source released by Google has no support for any devices except Nexus devices. Various ROMs, CyanogenMod being the biggest, have created open-source device trees to support additional devices. In the source tree for the device that I built for (Droid Incredible), for example, there is code for "liblights", "libsensors", a kernel module, some firmware, some configuration tweaks for various system apps like Camera and Torch--and a configuration file for the kernel. So if you want to compile AOSP for your m7, you'll have to port all that code over to the AOSP tree.
You might find it valuable to try building CM12 for your device. If you can do that successfully, then you can start tweaking with the kernel config that CM provides to suit your needs. Building CM is also very well documented, and once you've done that, it's more clear how you'd go about trying to build AOSP, and you can use the stuff that CM has done to help you port to AOSP if you want.
Here's Google's information on building straight AOSP:
https://source.android.com/source/building-devices.html
Here are CyanogenMod's guides on building for m7 and tweaking the kernel config:
http://wiki.cyanogenmod.org/w/Build_for_m7
http://wiki.cyanogenmod.org/w/Doc:_integrated_kernel_building
Here is an XDA Developer guide to porting a device from one AOSP-based ROM to another:
http://xda-university.com/as-a-developer/porting-aosp-roms-using-source-code
Thanks for the info, that's what I was afraid of. I was wanting to build something like the Google play edition, but with all the latest security updates.