Related
Hi there,
Now, I understand that there's a thread or two and a few web pages directed at compiling Android and its kernel from source.
However, the thread in question is months old, and didn't fully explain the process.
As for the web pages, they are mostly outdated and don't include enough information, not to mention desire specific instructions.
I think that, properly explained, building Android shouldn't be daunting, and everyone should be able to attempt it, if they wanted to.
So, I hope to compose a comprehensive guide on how to do just that.
The problem is that I myself have not been able to put enough instructions together to be able to complete a build. And there is no point digging up old threads.
So, If anyone who knows the ropes (that is, compiling android and a kernel from source) would be willing to lead the way, I'd happily turn it into an easy to understand guide.
Josh.
fllash said:
Hi there,
Now, I understand that there's a thread or two and a few web pages directed at compiling Android and its kernel from source.
However, the thread in question is months old, and didn't fully explain the process.
As for the web pages, they are mostly outdated and don't include enough information, not to mention desire specific instructions.
I think that, properly explained, building Android shouldn't be daunting, and everyone should be able to attempt it, if they wanted to.
So, I hope to compose a comprehensive guide on how to do just that.
The problem is that I myself have not been able to put enough instructions together to be able to complete a build. And there is no point digging up old threads.
So, If anyone who knows the ropes (that is, compiling android and a kernel from source) would be willing to lead the way, I'd happily turn it into an easy to understand guide.
Josh.
Click to expand...
Click to collapse
I followed this guide here and successfully compiled a modified HTC Kernel and I had very little Linux and Android experience.
Obviously instead of cloning the Cyanogen git, you just use the gits you wish to compile
Mekrel said:
I followed this guide here and successfully compiled a modified HTC Kernel and I had very little Linux and Android experience.
Obviously instead of cloning the Cyanogen git, you just use the gits you wish to compile
Click to expand...
Click to collapse
Thanks for the link
Though i don't fully understand the whole 'git' thing. Where do i find them? And how to i know which ones are the ones i want to use?
Josh
EDIT: Also, how do you 'edit' the kernel (i imagine it is somewhat like make menuconfig?). Also:
- Are these sense kernels?
- How do you add modules like OC and UV?
fllash said:
Thanks for the link
Though i don't fully understand the whole 'git' thing. Where do i find them? And how to i know which ones are the ones i want to use?
Josh
EDIT: Also, how do you 'edit' the kernel (i imagine it is somewhat like make menuconfig?). Also:
- Are these sense kernels?
- How do you add modules like OC and UV?
Click to expand...
Click to collapse
A git is a repository for source code, developers upload their source code there and can commit changes. The commit can allow descriptions of what was changed and also details the files changed.
The git system allows other people to add to the source if they have permission, or allows others to read the changes and download the source code.
Git links are usually posted by people who release software, as Android is GPL licensed so people have to release their source code if they're distributing their work.
Editing the kernel, take a look into the git and the commits and it will show you which files were changed and how exactly they were changed. That will give you the best understanding.
UV/OC is done by changing the acpu table in the architectures files and changing the minimum/maximum voltage figures in the board_bravo.c file.
The Cyanogen kernels are not Sense kernels no, it's a modified Google Kernel.
Thanks for the explanation. I followed the guide and built the rom, and it works (always a plus )
Now, the next thing is the kernel. How do I build a kernel with the CM tweaks integrated? I understand that all i would be doing is rebuilding the same one that is already installed, but im doing it to learn.
So, if i synced the GIT, does that include the CyanogenMOD kernel source? If it does, where is it and how do i rebuild it. If not, where do i find it?
Thanks,
Josh.
Nearly days I get an open souce code of i5800 and I just a new one in the compling world,so I hope someone can help me find something useful in configuring the code or some books useful.
If you have a qq number and our time are not rushed ,we can communicate in this way.(No facebook or twitter in china....How big the wall!)
My QQ number is 361180509
not sure I understood what you mean, do you have access to newer (froyo) kernel sources for I5800? if so, please do share
eclair kernel source is on opensource.samsung.com, and they compile just fine with the official Android toolkit, but Samsung's changes for Froyo are nowhere to be found (a few modules missing, touchscreen and accelerometer being the most notable), and the kernel doesn't compile anyway.
ze-m0n5t3r said:
not sure I understood what you mean, do you have access to newer (froyo) kernel sources for I5800? if so, please do share
eclair kernel source is on opensource.samsung.com, and they compile just fine with the official Android toolkit, but Samsung's changes for Froyo are nowhere to be found (a few modules missing, touchscreen and accelerometer being the most notable), and the kernel doesn't compile anyway.
Click to expand...
Click to collapse
Not sure if i get you right, do you say it does, or it does not compile? If not, we should request propper sources from Samsung.
sorry,I just don't find the offical source code website before posting this.Cause I just a freshman and I haven't got my PC....
maybe I'll compile the source code later.Sorry to make these mistakes.And I'm chnese.So my english is poor.....
Sent from my GT-I5800 using XDA App
FadeFx said:
Not sure if i get you right, do you say it does, or it does not compile? If not, we should request propper sources from Samsung.
Click to expand...
Click to collapse
eclair sources compile just fine, both with my system cross-compiling toolkit (arm-android-linux-gnueabi managed on gentoo by crossdev) and with the prebuilt one that comes with the Android platform
I might give it a try to actually boot it (but I would need to construct an initramfs, and it's a lot of work, and I kinda need to get back to "proper" work, I was consumed by Android during the last 3 weeks since I got the phone )
ze-m0n5t3r said:
eclair sources compile just fine, both with my system cross-compiling toolkit (arm-android-linux-gnueabi managed on gentoo by crossdev) and with the prebuilt one that comes with the Android platform
I might give it a try to actually boot it (but I would need to construct an initramfs, and it's a lot of work, and I kinda need to get back to "proper" work, I was consumed by Android during the last 3 weeks since I got the phone )
Click to expand...
Click to collapse
You can use the initramfs from Eclair.. I'm assuming you're talking about 2.1.. since 2.2 sources aren't out yet for this phone.
Link for the initramfs for Eclair is here: http://www.multiupload.com/U6GB5BB3HI
This is the JK1 I think - or whatever eclair rom I posted up previously
As we know, Android Lollipop is being released soon, and it requires a kernel that is 3.10.y, which is not available for our device. I'm not great with kernels and would in no way consider myself a kernel developer, but I have applied the neccessary patches to get the kernel version up to 3.10.0, which can be found here https://github.com/frap129/android_kernel_samsung_d2. Because I'm not a kernel developer, I am looking for some help in at least getting this kernel somewhat ready before the release of 5.0, so we can all get the latest update ASAP. Any and all help is apreciated!
Does your kernel compile and boot on cm11? If it does, there shouldn't be much problems in getting it working on L.
Any news? Does it compile?
frap129 said:
As we know, Android Lollipop is being released soon, and it requires a kernel that is 3.10.y, which is not available for our device. I'm not great with kernels and would in no way consider myself a kernel developer, but I have applied the neccessary patches to get the kernel version up to 3.10.0, which can be found here https://github.com/frap129/android_kernel_samsung_d2. Because I'm not a kernel developer, I am looking for some help in at least getting this kernel somewhat ready before the release of 5.0, so we can all get the latest update ASAP. Any and all help is apreciated!
Click to expand...
Click to collapse
nope android 5.0 doesnt require new kernel, you could build it on 3.0.y like i am doing on my Note 2 oh and as far as i know new nexus devices are still on 3.4.y
Ivan_Meler said:
nope android 5.0 doesnt require new kernel, you could build it on 3.0.y like i am doing on my Note 2 oh and as far as i know new nexus devices are still on 3.4.y
Click to expand...
Click to collapse
yes, but the new Samsung tablets (at least) are being shipped with the 3.10.x kernels.. 'course they're still running kitkat at the moment, but definitely cannot wait to see if/when they get kit kat.
I'll have to report back later after I take pictures of the 'about phone' page lol [if you want proof anyway]
frap129 said:
As we know, Android Lollipop is being released soon, and it requires a kernel that is 3.10.y, which is not available for our device. I'm not great with kernels and would in no way consider myself a kernel developer, but I have applied the neccessary patches to get the kernel version up to 3.10.0, which can be found here https://github.com/frap129/android_kernel_samsung_d2. Because I'm not a kernel developer, I am looking for some help in at least getting this kernel somewhat ready before the release of 5.0, so we can all get the latest update ASAP. Any and all help is apreciated!
Click to expand...
Click to collapse
ztotherad said:
yes, but the new Samsung tablets (at least) are being shipped with the 3.10.x kernels.. 'course they're still running kitkat at the moment, but definitely cannot wait to see if/when they get kit kat.
I'll have to report back later after I take pictures of the 'about phone' page lol [if you want proof anyway]
Click to expand...
Click to collapse
I know samsung does things like that (i have few other devices from them) but hey thats samsung and they are lazy so they dont want to update kernel version after device is relesed so they do this not to feel outdated on softwere side
Whoops! I read somewhere that the newly expanded SELinux permissions had some dependency on the 3.10.y kernel. Oh well, I guess Ill just test it anyways so I can brag that I have a newer kernel than anyone else if it works
frap129 said:
Whoops! I read somewhere that the newly expanded SELinux permissions had some dependency on the 3.10.y kernel. Oh well, I guess Ill just test it anyways so I can brag that I have a newer kernel than anyone else if it works
Click to expand...
Click to collapse
That would definitely be awesome! Be sure to report back your results. I'm not an experienced ROM or kernel developer, but I'll be attempting on bringing a pure AOSP 5.0.0_r2 to my GS3. I'm not sure how successful I'll be, but my first step involved me planning on copying over our vendor repo from CM's M11 or M12 release (whenever that gets out) and trying to build Lollipop against it.
polarEskimo said:
That would definitely be awesome! Be sure to report back your results. I'm not an experienced ROM or kernel developer, but I'll be attempting on bringing a pure AOSP 5.0.0_r2 to my GS3. I'm not sure how successful I'll be, but my first step involved me planning on copying over our vendor repo from CM's M11 or M12 release (whenever that gets out) and trying to build Lollipop against it.
Click to expand...
Click to collapse
I was planning on working on that as well over the weekend.
polarEskimo said:
That would definitely be awesome! Be sure to report back your results. I'm not an experienced ROM or kernel developer, but I'll be attempting on bringing a pure AOSP 5.0.0_r2 to my GS3. I'm not sure how successful I'll be, but my first step involved me planning on copying over our vendor repo from CM's M11 or M12 release (whenever that gets out) and trying to build Lollipop against it.
Click to expand...
Click to collapse
You will need to change many things in device tree to get it compile oh and dont forget to disable cm overlays
Ivan_Meler said:
You will need to change many things in device tree to get it compile oh and dont forget to disable cm overlays
Click to expand...
Click to collapse
I'm very new to the AOSP build process and didn't have much luck last night getting the CM device sources to play nicely with AOSP. I'm finding it difficult to find any relevant guides on porting over the CM device trees to pure AOSP. If you or anyone else can help by explaining the process or pointing to a guide that I may have missed, I'd be grateful. Plus the more people we have collaborating on his, the better our chances of getting Lollipop on our devices.
I'm working on porting 5.0 to our phone, tweaked the device tree and got the build running but (as expected) i'm running into SEpolicy hell. The new selinux implementation in lollipop is proving to be trouble. I've just made a few more edits and the build is moving along, I'll post results shortly.
If anyone cares to help I'll walk you through what I've done so far. One thing to note is you need to adjust vendorsetup.sh to say full_d2lte-eng instead of cm_d2lte-eng and create AndroidProducts.mk that points at full_d2lte.mk (you can use the hammerhead device tree as a reference to do this)
That will get your device tree to regester properly. If you don't do the above you'll get a "no config makefile found" error when you try to select d2lte with lunch.
As far as the actual tree, you're gonna wanna grab device/samsung/d2lte, device/samsung/msm8960-common, vendor/samsung/d2lte, vendor/samsung/msm8960-common, vendor/cm, vendor/cyngn, and kernel/d2.
You'll also need a couple things from /hardware, namely hardware/samsung. There's a couple things you'll need to remove from msm8960-common in /device, I can't remember the specific file name but the error message will tell you.
Follow those instructions and you'll get where I'm at, with the build crapping out on SEpolicy
Restl3ss said:
I'm working on porting 5.0 to our phone, tweaked the device tree and got the build running but (as expected) i'm running into SEpolicy hell. The new selinux implementation in lollipop is proving to be trouble. I've just made a few more edits and the build is moving along, I'll post results shortly.
If anyone cares to help I'll walk you through what I've done so far. One thing to note is you need to adjust vendorsetup.sh to say full_d2lte-eng instead of cm_d2lte-eng and create AndroidProducts.mk that points at full_d2lte.mk (you can use the hammerhead device tree as a reference to do this)
That will get your device tree to regester properly. If you don't do the above you'll get a "no config makefile found" error when you try to select d2lte with lunch.
As far as the actual tree, you're gonna wanna grab device/samsung/d2lte, device/samsung/msm8960-common, vendor/samsung/d2lte, vendor/samsung/msm8960-common, vendor/cm, vendor/cyngn, and kernel/d2.
You'll also need a couple things from /hardware, namely hardware/samsung. There's a couple things you'll need to remove from msm8960-common in /device, I can't remember the specific file name but the error message will tell you.
Follow those instructions and you'll get where I'm at, with the build crapping out on SEpolicy
Click to expand...
Click to collapse
Wow, this is awesome. It sounds like you've gotten the furthest than any of us. I appreciate the instructions, but is there any chance you could push your repos to GitHub? And do you think the SELinux stuff you're running into has anything to do with our device being on the 3.4 kernel instead of 3.10?
polarEskimo said:
Wow, this is awesome. It sounds like you've gotten the furthest than any of us. I appreciate the instructions, but is there any chance you could push your repos to GitHub? And do you think the SELinux stuff you're running into has anything to do with our device being on the 3.4 kernel instead of 3.10?
Click to expand...
Click to collapse
It's not a kernel thing so much as a device tree thing. (Kitkat vs lollipop) the policy.conf (along with a few other things) in the device tree is designed for kitkat and isn't playing very nice with the 5.0 source. I'm trying to bang it out a bit by swapping a few C and header files in the build core.
As for my last build, my tweaks got me past where I was but now I'm hanging on a new set of SElinux errors.
I've been at this for less than 12 hours so given that timeframe this looks promising.
I'm trying to think of what the best way to go about this is. I could either try to adapt the tree for the new source or I could try to adapt the source for the old tree (use KitKat SElinux implementation on lollipop). The latter would have more success with root but the former is the correct way to do it (and would get us cyanogenmod 12 faster once they start nightlies, as I can push the changes to gerrit)
Restl3ss said:
It's not a kernel thing so much as a device tree thing. (Kitkat vs lollipop) the policy.conf (along with a few other things) in the device tree is designed for kitkat and isn't playing very nice with the 5.0 source. I'm trying to bang it out a bit by swapping a few C and header files in the build core.
As for my last build, my tweaks got me past where I was but now I'm hanging on a new set of SElinux errors.
I've been at this for less than 12 hours so given that timeframe this looks promising.
I'm trying to think of what the best way to go about this is. I could either try to adapt the tree for the new source or I could try to adapt the source for the old tree (use KitKat SElinux implementation on lollipop). The latter would have more success with root but the former is the correct way to do it (and would get us cyanogenmod 12 faster once they start nightlies, as I can push the changes to gerrit)
Click to expand...
Click to collapse
Again, any chance you can post your source? You don't have to try and work on it on your own. The more people that look at the progressions you made, the better our chances are at success.
polarEskimo said:
Again, any chance you can post your source? You don't have to try and work on it on your own. The more people that look at the progressions you made, the better our chances are at success.
Click to expand...
Click to collapse
I'll push what I've got to github after this experiment
Cyanogen is updating sources to lolipop right now and omni has semi working source so it will be easier to port 5.0 since we wont need to edit device tree that much
Ivan_Meler said:
Cyanogen is updating sources to lolipop right now and omni has semi working source so it will be easier to port 5.0 since we wont need to edit device tree that much
Click to expand...
Click to collapse
Yes but, they have a tentative deadline of dec. 1st to start pushing out the first nightlies. We likely won't be in the first wave either, since d2 is now 3 generations out of date.
I'd much rather just port aosp and have it in 2 weeks rather than wait 3 weeks to even begin work.
Side note. If/when I get this working I'm calling it PotatOS
Managed to work past my problem with SElinux for now, the build has now moved on to... another set of errors!
Build currently hangs at this:
Code:
host C++: libutils_32 <= system/core/libutils/StopWatch.cpp
host C++: libutils_32 <= system/core/libutils/String8.cpp
host C++: libutils_32 <= system/core/libutils/String16.cpp
host C++: libutils_32 <= system/core/libutils/SystemClock.cpp
host C++: libutils_32 <= system/core/libutils/Threads.cpp
host C++: libutils_32 <= system/core/libutils/Timers.cpp
system/core/libutils/Timers.cpp: In function 'nsecs_t systemTime(int)':
system/core/libutils/Timers.cpp:43:13: error: 'CLOCK_BOOTTIME' was not declared in this scope
build/core/binary.mk:618: recipe for target 'out/host/linux-x86/obj32/STATIC_LIBRARIES/libutils_intermediates/Timers.o' failed
make: *** [out/host/linux-x86/obj32/STATIC_LIBRARIES/libutils_intermediates/Timers.o] Error 1
#### make failed to build some targets (01:19 (mm:ss)) ####
Going to bed, will get back at it in the morning. Source should be up on github by tomorrow night
Restl3ss said:
Yes but, they have a tentative deadline of dec. 1st to start pushing out the first nightlies. We likely won't be in the first wave either, since d2 is now 3 generations out of date.
I'd much rather just port aosp and have it in 2 weeks rather than wait 3 weeks to even begin work.
Side note. If/when I get this working I'm calling it PotatOS
Click to expand...
Click to collapse
I'm with you on that, I'd rather have pure AOSP than buggy CM nightlies. Also interesting choice of ROM name lol. Thanks for your hard work and I'm looking forward to pulling down your repos so I can take a stab at these compile-time issues.
I would like to start with building my ROM from scratch. I have read a lot of tutorials and they're all the same: sync everything and then make otapackage or etc. The problem is: it is everything already preconfigured, you have just to build.
So my question is: can I use latest Sony kernel sources or M2Dev KitKat sources to build CM12 or AOSP Lollipop (generally to build higher version of Android)? Or maybe I would have to write it from scratch? I expect to get at least bootable ROM.
I can't tell that I'm going to start a real development, I just want to learn how stuff works.
ReznorNInchNails said:
I would like to start with building my ROM from scratch. I have read a lot of tutorials and they're all the same: sync everything and then make otapackage or etc. The problem is: it is everything already preconfigured, you have just to build.
So my question is: can I use latest Sony kernel sources or M2Dev KitKat sources to build CM12 or AOSP Lollipop (generally to build higher version of Android)? Or maybe I would have to write it from scratch? I expect to get at least bootable ROM.
I can't tell that I'm going to start a real development, I just want to learn how stuff works.
Click to expand...
Click to collapse
Send me the tutorial link of you....i'll be try
ReznorNInchNails said:
I would like to start with building my ROM from scratch. I have read a lot of tutorials and they're all the same: sync everything and then make otapackage or etc. The problem is: it is everything already preconfigured, you have just to build.
So my question is: can I use latest Sony kernel sources or M2Dev KitKat sources to build CM12 or AOSP Lollipop (generally to build higher version of Android)? Or maybe I would have to write it from scratch? I expect to get at least bootable ROM.
I can't tell that I'm going to start a real development, I just want to learn how stuff works.
Click to expand...
Click to collapse
Yeah you can use kitkat kernel sources to build lollipop with some changes here and their!!
RootLord said:
Yeah you can use kitkat kernel sources to build lollipop with some changes here and their!!
Click to expand...
Click to collapse
Thanks
Hi! I own the Nexus5X and I am interesting in creating a custom ROM for the device. I have synced the AOSP source tree, gotten everything set up and flashed a build on to my device.
How can I start creating a ROM for the device? What are some general guidelines? How do I start tweaking apps, adding features, etc.
Also, if someone could take a look at these errors I am getting with my AOSP build that would be awesome: https://forum.xda-developers.com/nexus-5x/help/issues-aosp-built-source-bullhead-t3555439
Thanks
NateDev said:
Hi! I own the Nexus5X and I am interesting in creating a custom ROM for the device. I have synced the AOSP source tree, gotten everything set up and flashed a build on to my device.
How can I start creating a ROM for the device? What are some general guidelines? How do I start tweaking apps, adding features, etc.
Also, if someone could take a look at these errors I am getting with my AOSP build that would be awesome: https://forum.xda-developers.com/nexus-5x/help/issues-aosp-built-source-bullhead-t3555439
Thanks
Click to expand...
Click to collapse
Hello,
If you have interest in develop a custom rom, i suggest you start at XDA University to learn a bit of everything about Android.
You have some great guides on Android Software Development (look at stick posts)
I have my own guide which is not finished but I will teach everything you need to know about build a custom ROM from source, how to use github, git, mergetool etc... You can follow my progress HERE
FSadino said:
Hello,
If you have interest in develop a custom rom, i suggest you start at XDA University to learn a bit of everything about Android.
You have some great guides on Android Software Development (look at stick posts)
I have my own guide which is not finished but I will teach everything you need to know about build a custom ROM from source, how to use github, git, mergetool etc... You can follow my progress HERE
Click to expand...
Click to collapse
OK thanks, I will take a look at that. If possible, could you take a look at the errors I am getting with my AOSP build? I posed the link in the original post. Also, do you have to run extract-files.sh or can you simply download the vendor binaries from Google and run the extracting script? (AOSP)
NateDev said:
Also, do you have to run extract-files.sh or can you simply download the vendor binaries from Google and run the extracting script? (AOSP)
Click to expand...
Click to collapse
If you fork/download vendor binaries you don't need to run extracting script