I want to compile any TouchWiz-based ROM for Samsung Galaxy S4 (GT-I9500). I've found the guide for CyanogenMod and compiled it, but there are bugs in all Cyanogen-based ROMs for this device: unable to power it on when charging, and MHL cable connection often doesn't work. These bugs are absent in TouchWiz ROM, that's why I want to compile it to make my modifications there. Is there any guide or instruction how to do it?
We dont't have sources for Samsungs OEM ROM, only the kernel sources, so you can't compile it like CM.
You only can take the stockfirmware, tweak it more or less (decompile APKs, Theming, etc.), make a flashable Zip or something like that.
Related
i own samsung galaxy pocket gt-s5300, its like galaxy Y little brother. And i'm trying to build from source.
i'm new in this stuff, so i can't elaborate enough to find solution myself.
i've downloaded the samsung source for this device from samsung website, when extracted it has 2 sources, platform and kernel.
im trying to build the platform and hopefully can build the stock rom successfully so i can proceed to modification.
already followed the instructions to get the gingerbread 2.3.6 from aosp, merge the folders from samsung to aosp, and execute build script (generic-user). seems fine, i got system.img,userdata.img,etc but no boot.img, still tried to flash anyway and figured that this device doesn't support fastboot but adb works. then i tried to make otapackage but got no rule error. perhaps caused by this generic-user lunch, but i dont know how to add this device to build, because there's only generic,emulator,crespo-4g, and crespo choices.
trying to find alternatives, and thinking about modify the stock rom with my build, so i also tried to open the odin flashable stock rom with winrar (xxx.tar.md5) which i cant, i dont know why since the other galaxy rom has no problem.
so many thing i'm not sure of doing it right, so i need help building for this samsung device from source.
bLusiLv said:
i own samsung galaxy pocket gt-s5300, its like galaxy Y little brother. And i'm trying to build from source.
i'm new in this stuff, so i can't elaborate enough to find solution myself.
i've downloaded the samsung source for this device from samsung website, when extracted it has 2 sources, platform and kernel.
im trying to build the platform and hopefully can build the stock rom successfully so i can proceed to modification.
already followed the instructions to get the gingerbread 2.3.6 from aosp, merge the folders from samsung to aosp, and execute build script (generic-user). seems fine, i got system.img,userdata.img,etc but no boot.img, still tried to flash anyway and figured that this device doesn't support fastboot but adb works. then i tried to make otapackage but got no rule error. perhaps caused by this generic-user lunch, but i dont know how to add this device to build, because there's only generic,emulator,crespo-4g, and crespo choices.
trying to find alternatives, and thinking about modify the stock rom with my build, so i also tried to open the odin flashable stock rom with winrar (xxx.tar.md5) which i cant, i dont know why since the other galaxy rom has no problem.
so many thing i'm not sure of doing it right, so i need help building for this samsung device from source.
Click to expand...
Click to collapse
I try to do it but i still make a lot of tweaks on my Rom I need to make good performance to my phone
The first thing I want to say is that my English is not really good. I hope you understand my questions.
I have an idea for a new Android rom, but I'm faced with a dilemma. I want to have as much as possible supported devices, so I also can just build a launcher apk which can be installed through Google Play. In this way all mobile devices with the minimal platform version can use it. The biggest problem is that I don't only want a replacement for the application launcher but also the notification drawer and everything else. Is it possible to replace them also? I don't think so, so I think I'll work on a custom rom.
The next problem is which base rom I would use if I really build a custom rom. It's most likely to use AOSP as base because it's clean. The question is which version of AOSP: Gingerbread, Ice Cream Sandwich, or the newest version Jelly Bean. You would probably say Jelly Bean because this is the newest version. The problem is the phone support. Gingerbread is supported on most phones. If I build ICS or JB the phones which are supported by Cyanogenmod are easy to support, because I can use their device files. The only problem is that my phone, the Samsung Galaxy Gio is not officially supported and the unofficial port is not really stable. I don't think it's a big problem to use this device files and just wait till the developer makes it more stable, but I don't know for sure.
The last thing I want to know is if it's really that simple to support multiple devices. If I read tutorials about porting existing roms to your device they all say you just have to add your device files to the source and compile it. But they never say something about the kernel. Most devices need another kernel because their hardware is different isn't it? Please explain me how this works.
I'm sorry about this hazy story, but please help me before I make wrong choices. Thanks on purpose.
Wietse
WietsedeVries said:
The biggest problem is that I don't only want a replacement for the application launcher but also the notification drawer and everything else. Is it possible to replace them also? I don't think so, so I think I'll work on a custom rom.
Click to expand...
Click to collapse
These changes you are talking about can be done. They are system changes so not supported by the android app installer.
Eg: Your notification drawer, status bar are part of SystemUI.apk. The source for this is can be found in the AOSP source code under android/frameworks/base/...
You can make your modifications, compile it into an apk and then make a flashable zip to replace the current one (or push it via a rooted adb console).
or you can compile the entire source code into a flashable zip (eg CM7,9 etc..) and use it a replacement ROM with your modifications.
This is the line between an application under the android runtime and the android runtime itself.
these files, under framework are part of the OS. so to provide a customized version of the operating itself is what people like to call ROMs.
Now ROMs (like any OS) are device dependant. Windows has the code to run in a lot of different hardware configs, but android aims to be small. It should have only the minimum required code to efficiently run itself on a device.
Thats the kernel. The kernel communicates with the hardware and so the rest of the hardware can happily talk to a working kernel and expect the hardware to function as advertised. Kernel is a simple program which goes into the RAM on system start and sits there directing the operation of the phone.
Kernel devs work on making sure the hardware and the android runtime work perfectly together. Now, in this imperfect world, not all sources are open, even though they should be. and therein the issue lies.
If you want to compile android from source and make sure it works on your phone, first you need to make sure you have the kernel with all the changes(patches) to it made by the vendor (chap who made the phone and bullied you into buying it) to get it working on your hardware.
If you dont have that, you have to do it yourself. Or wait for someone else to do it.
once you can compile android and get it working on your phone with all the itty bitty hardware working A-OK.. then you can browse through the source, make changes as per your individual requirements and compile it into a ROM.
see the changes to the OS are separate from the changes to the kernel. The kernel changes are for hardware-software interaction so they are phone SPECIFIC.
but changes to your custom android OS (ROM) can be "cherry-picked" from other ROM/gerrit/AOSP/CM/AOKP sources and put inside your own source tree to get included in your build.
so if you have all the device / kernel stuff from a working android distribution, you can take the source of another android distribution and swap the device stuff into it and see if it works.
hope this helps.
wingie6200 said:
These changes you are talking about can be done. They are system changes so not supported by the android app installer.
Eg: Your notification drawer, status bar are part of SystemUI.apk. The source for this is can be found in the AOSP source code under android/frameworks/base/...
You can make your modifications, compile it into an apk and then make a flashable zip to replace the current one (or push it via a rooted adb console).
or you can compile the entire source code into a flashable zip (eg CM7,9 etc..) and use it a replacement ROM with your modifications.
This is the line between an application under the android runtime and the android runtime itself.
these files, under framework are part of the OS. so to provide a customized version of the operating itself is what people like to call ROMs.
Now ROMs (like any OS) are device dependant. Windows has the code to run in a lot of different hardware configs, but android aims to be small. It should have only the minimum required code to efficiently run itself on a device.
Thats the kernel. The kernel communicates with the hardware and so the rest of the hardware can happily talk to a working kernel and expect the hardware to function as advertised. Kernel is a simple program which goes into the RAM on system start and sits there directing the operation of the phone.
Kernel devs work on making sure the hardware and the android runtime work perfectly together. Now, in this imperfect world, not all sources are open, even though they should be. and therein the issue lies.
If you want to compile android from source and make sure it works on your phone, first you need to make sure you have the kernel with all the changes(patches) to it made by the vendor (chap who made the phone and bullied you into buying it) to get it working on your hardware.
If you dont have that, you have to do it yourself. Or wait for someone else to do it.
once you can compile android and get it working on your phone with all the itty bitty hardware working A-OK.. then you can browse through the source, make changes as per your individual requirements and compile it into a ROM.
see the changes to the OS are separate from the changes to the kernel. The kernel changes are for hardware-software interaction so they are phone SPECIFIC.
but changes to your custom android OS (ROM) can be "cherry-picked" from other ROM/gerrit/AOSP/CM/AOKP sources and put inside your own source tree to get included in your build.
so if you have all the device / kernel stuff from a working android distribution, you can take the source of another android distribution and swap the device stuff into it and see if it works.
hope this helps.
Click to expand...
Click to collapse
Thank you very very much for your explanation! It's a pity it's impossible to hit multiple times "Thanks".
I think I'm going to make a modified SystemUI.apk but you didn't tell the application launcher is also in this file. Did you just forget this or is this stored in another file/folder? And the lock screen? And I want also to replace the boot animation if it's possible.
If I take the source files of the SystemUI.apk of AOSP ICS, does this work on every phone running ICS? Included CM, AOKP and other (smaller) custom roms? And my last question: Since SystemUI.apk a apk file is, is it possible to edit these files through Eclipse and build it in Eclipse? Or do I get errors?
//Edit:
Still another question: How much work is it to, as example, port a modified Gingerbread SystemUI.apk to ICS? (Or vice versa)
WietsedeVries said:
Thank you very very much for your explanation! It's a pity it's impossible to hit multiple times "Thanks".
I think I'm going to make a modified SystemUI.apk but you didn't tell the application launcher is also in this file. Did you just forget this or is this stored in another file/folder? And the lock screen? And I want also to replace the boot animation if it's possible.
If I take the source files of the SystemUI.apk of AOSP ICS, does this work on every phone running ICS? Included CM, AOKP and other (smaller) custom roms? And my last question: Since SystemUI.apk a apk file is, is it possible to edit these files through Eclipse and build it in Eclipse? Or do I get errors?
//Edit:
Still another question: How much work is it to, as example, port a modified Gingerbread SystemUI.apk to ICS? (Or vice versa)
Click to expand...
Click to collapse
Only way is through exchanging the png files since porting the whole .apk is impossible.
Sent from my Jelly Beaned Ace
Thanks for the answer. And do you also know the answers of the other questions?
Sent from my GT-S5660 using xda app-developers app
WietsedeVries said:
If I take the source files of the SystemUI.apk of AOSP ICS, does this work on every phone running ICS? Included CM, AOKP and other (smaller) custom roms? And my last question: Since SystemUI.apk a apk file is, is it possible to edit these files through Eclipse and build it in Eclipse? Or do I get errors?
//Edit:
Still another question: How much work is it to, as example, port a modified Gingerbread SystemUI.apk to ICS? (Or vice versa)
Click to expand...
Click to collapse
There are two roads you can go now - one is use apktool to *decompile* apk the apk file that you've taken from your phone, it doesnt convert the app to java source code but java bytecode in .smali files (like an assembly version of the source) but you will have access to the resource files (xml, images etc..) so you can replace them and create some new themes.
http://forum.xda-developers.com/showthread.php?t=1814441
http://forum.xda-developers.com/showthread.php?t=1760133
And no - a GB systemUI.apk will *NOT* work on ICS. It is very probable that any changes you make through any of these methods can brick you phone. So make sure you have CWM and a nandroid backup.
If you want to add/edit functionality within the source code of systemUI.apk, you need to learn how to compile Android from Source. i would suggest getting hold of the CyanogenMod source tree for your device and playing around with it.
Ginger bread is CM7 and ICS is CM9.
http://forum.xda-developers.com/showthread.php?t=1552090
once you have the full source tree, you'll find a folder called android/frameworks/base/core/...something../systemui/..
this will contain the javasource code for your application. Here you can edit stuff to your hearts content!
Note that this cannot be compiled standalone by eclipse. The Android build system must be used to compile this (cuz its a system app).
a nice resource i used when i was doing the same thing :laugh:
http://iserveandroid.blogspot.in/2011/01/how-to-implement-your-own-status-bar.html
cheers and have fun.
Hello,
So my brother bough a chinese smartphone. Many chinese apps where preinstalled and I have been able to remove them, so you wouldn't notice it is a chinese device. However it would be neat if this phone would have proper AOSP.
The current ROM is almost AOSP, minor modifications have been done. This made me curious, would one be able to compile AOSP from source, and use the original kernel (if compatible)? Is a kernel extractable from a ROM to be used in another? Do you need the sources from the manufacturer in order to succesfully build AOSP?
Please note I'm not trying to do this, I'm just curious if it could be done. I have done a fair amount of research but most of the tutorials are about compiling kernels, something I DON'T want to do.
_Roysten said:
Hello,
So my brother bough a chinese smartphone. Many chinese apps where preinstalled and I have been able to remove them, so you wouldn't notice it is a chinese device. However it would be neat if this phone would have proper AOSP.
The current ROM is almost AOSP, minor modifications have been done. This made me curious, would one be able to compile AOSP from source, and use the original kernel (if compatible)? Is a kernel extractable from a ROM to be used in another? Do you need the sources from the manufacturer in order to succesfully build AOSP?
Please note I'm not trying to do this, I'm just curious if it could be done. I have done a fair amount of research but most of the tutorials are about compiling kernels, something I DON'T want to do.
Click to expand...
Click to collapse
It is definitely possible, but will take many hours of work of you want to achieve a stable daily driver state. Usually the kernel will need modifications to make it work with the AOSP ROM.
Sent from my SGH-T999 using Tapatalk 2
Say the rom uses a kernel that works with AOSP, can one build the Android OS using the already compiled kernel from the device?
Ok so I have built cm11 for my device (galaxys s 4g), and ported cm11 from another device to (aries -> galaxy s 4g). CM11 has too much going on IMO and I just want pure aosp on my device, the problem is that there are no (recent) aosp roms for my device, or any similar devices.
So how do I port my device to a different flavor of android when there are no roms of that flavor?
What have I tried?
So far I have setup the aosp 4.4 repo to a different folder than my cm11 repo (the build environment files should be the same right?)
I tried using the manifest from the cm11 rom and buidling with aosp,that didnt work it didnt even finish compiling =(.
I browsed the aosp source for other devices by the same manufacturer, but everything looked completely different from what I am used to.
The most helpful guide in this direction sofar has been cyanogenmods guide but it has left me with more questions than answers.
What [I think] I need to know
Custom recovery - aosp doent seem to include a recovery, the cm guide says to start with the recovery. So i need to know if I need to add a custom recovery to aosp, or if i can install aosp roms from twrp without breaking it.
Binaries - It is safe to use the binaries used in CM11 for aosp/any other flavor, or are the binaries flavor specific? (im thinking they are safe to use, but not entirely sure).
Device files - what files should be safe to use for any flavor?
Kernel - Cm builds the kernel when you compile the rom (or so it says), does aosp build the kernel when you build the rom, or do I have to build the kernel separately? Is it safe to say use a CM11 kernel with an aosp rom?
I wanted to learn about some best practices about working on more than one Custom ROM (for the same device), I already have a working LineageOS build environment for my device (kebab).
I want to get to see how building an other ROM differs from the LineageOS building process, if a ROM has any sketchy Google requirements I don't like, and how functional a ROM is when building it with the device trees and kernel sources provided by LineageOS. Don't worry, I don't want to create buggy binaries of 10 different ROMS, post them on XDA and abandon them after two days. I just want to get more experience and try to build other ROM's myself, and to see what modification are required for a ROM port.
Is it possible copying some source code from my working LineageOS building environment so that repo doesn't have to re-download everything?
Is it okay to use the same ccache for both ROM's, so that I don't to re-compile binaries these both ROM's share? (As of my understanding, ccache keeps my build times lower when re-building a ROM, is that right?)
Any other tips about managing multiple building environments are appreciated! Thanks!