Simple way to port "official" Android ROM (AOSP) to specific device - General Questions and Answers

Hi,
AOSP (check: source.android.com) is where one can find kind of official source code of Android.
Then you download it, compile it - and you have ROM ready to be flushed.
1. Is it will work for any device?
or, and I guess this makes more sense-
2. One need to modify according to his device spec. some parameters in the code. For example somewhere in the files there is a file with code holding some constant SW parameter called something like "double CPU_HZ" and you need to type "=1500;" because this is correct for your device.
Is there a simple guide to all device specifc parameters (and where to find them in the code)? Because if so - anybody can Download->follow the guide, modify all params according to his device spec->compile->flush->you have clean Android OS ready to go.
Thanks,.

Related

Blob utility for AOSP-based ROMs

https://github.com/JackpotClavin/Android-Blob-Utility
The purpose of this program is to help AOSP-based ROM developers quickly and easily find out which proprietary blobs need to be copied into the ROM's build, or built using source. How the program works is you do a /system dump into a folder on a Linux computer. Then you make the program using the 'make' command; then you can run it.
First off, the program will ask you what the sdk version of the /system dump you pulled happens to be. For example, if your /system dump is Android 4.3, and intend port a 4.3-based ROM, then enter 18 and press enter.
When it prompts you for location of the /system dump you pulled, if the location of the build.prop of the /system dump is under:
Code:
/home/user/backup/dump/system/build.prop
then just use:
Code:
/home/user/backup/dump/system
The program will now ask you for your device's manufacturer's name, and the device's name. For my Verizon LG G2, I entered "lge" and "vs980" respectively.
The utility then will ask you how many files you wish to run through the program. In the case of my LG G2, the KitKat build requires two main proprietary camera-related libraries to run (/system/bin/mm-qcamera-daemon and
/system/lib/hw/camera.msm8974.so).
So I typed in 2 and pressed enter (because I'm running two proprietary files through the program)
Then simply typed in:
Code:
/home/user/backup/dump/system/bin/mm-qcamera-daemon
and pressed enter and it printed out *every* file needed to get /system/bin/mm-qcamera-daemon running (the file might be proprietary, or it can be built from source).
Then it asked for the final proprietary file, so I simply typed in:
Code:
/home/user/backup/dump/system/lib/hw/camera.msm8974.so
and pressed enter and it printed out *every* file needed to get /system/lib/hw/camera.msm8974.so running (the file might be proprietary, or it can be built from source).
An example usage of this program can be found here: https://raw.githubusercontent.com/JackpotClavin/Android-Blob-Utility/master/Example_Usage.txt
That's 106 proprietary blobs done in a flash!
The beauty of this program is that it's recursive, so if proprietary file 'A' needs proprietary file 'B' to run, but proprietary file 'B' needs proprietary file 'C' to run, which in turn needs 'D' to run, then simply entering proprietary file A to run will print out all A, B, C, and D nicely formatted so that you can simply copy the output and place it in a file under vendor/manufacturer/codename/codename-vendor-blobs.mk file in your AOSP build source tree's root.
Another great thing about this program is that it doesn't just catch the libraries needed to satisfy the linker, but rather, it will also print out those libraries that are called within the actual code of the library itself, like:
Code:
dlopen("libfoo.so", RTLD_NOW);
libfoo.so is not marked as a shared library, so the linker won't complain that libfoo.so is missing, and there might be no sign that libfoo.so missing and needed, but when it's time for the daemon or library to run, it won't show any sign that something is wrong, until you see that it doesn't work. This program will catch and display that libfoo.so is needed.
So basically:
1. Extract /system dump image
2. Tell program the SDK version of your /system dump
3. Tell program the location of your /system dump
4. Tell the program your device's manufacturer's name
5. Tell the program your device's codename
6. Tell program how many files you wish to run through the utility
7. Tell program the location of the file(s) you wish to run through the program.
8. Copy the output of the utility to a text file under vendor/manufacturer/codename/codename-vendor-blobs.mk
reserve
Hi,
I'm a noob and don't worry about my silly question.
I'm trying to build my first cm-rom and tested your tool. Thanks a lot for your work, it worked for me.
I'm a little bit curios about your point 5. Where can I find all the files I need for my own source-tree/device?
It would be nice if you can give me a hint.
Thanks a lot and greetings from germany
Greetings from the US
Do you mean the device folder the ROM? You can look at similar devices to your device and see what they did and make the changes to build Android.
This is the device folder for the Nexus 5 -> https://android.googlesource.com/device/lge/hammerhead
This tool is under-recognized. I think it's a really great way to find which blobs are dependencies!
Codename13 said:
This tool is under-recognized. I think it's a really great way to find which blobs are dependencies!
Click to expand...
Click to collapse
Thanks! Are you developing a ROM? Let me know if it helps!
Sent from my LG-VS980 using XDA Free mobile app
Could this be updated to Lolipop?
2GigayteSD said:
Could this be updated to Lolipop?
Click to expand...
Click to collapse
What do you mean? I added support for SDK version 20 if that's what you're asking.
Sent from my LG-VS980 using XDA Free mobile app
Does that mean I can port AOSP to any device just by getting all the necessary blobs? I'm not sure but I'm trying to port Lollipop to my device but I don't really have a clue how to do it/what's needed to do it. Will this be useful for me? Thanks.
cikoleko said:
Does that mean I can port AOSP to any device just by getting all the necessary blobs? I'm not sure but I'm trying to port Lollipop to my device but I don't really have a clue how to do it/what's needed to do it. Will this be useful for me? Thanks.
Click to expand...
Click to collapse
It helps with making ROMs for devices that don't have support (either the model is brand new or the device never gained AOSP ROM support for whatever reason)
Basically, in the early stages of porting ROMs, certain things won't work (graphics, camera, radio) and this is mostly due to not having the correct proprietary files needed for the OS to interact with the hardware. The proprietary files have dependencies (they rely on other libraries, which in turn may rely on other libraries, and so on and so forth until all proprietary libraries are satisfied).
In the case of my LG G2, there were a total of 92 proprietary files that needed to be pushed to the device in order to get just camera working. Instead of pushing one library at a time and getting a logcat or strace dump of what the daemons are calling or depend on, I wrote this program to recursively search for all proprietary libraries needed to satisfy a proprietary library (or in the case of the camera for my G2, there were two proprietary libraries needed that required those said 90 other proprietary blobs).
So rather than pushing libraries, (then gathering logs and stracing) and hoping that the one you just pushed is the one that will get your camera, radio, etc to work, you run your known proprietary daemons or libraries through this program and it will print out the necessary libraries to get it working, in a fraction of a second
Can you go through the actual "porting" process because from what I understand you have done it? If I'm correct to port a ROM you need to have working ROM from other device? If yes, does that device have to be same manufacturer? Lets say I do have working AOSPA kitkat for my device so I need to get AOSPA lollipop and exchange the certain files and then I'll able to run it? Once again if it's like that then I use your tool and get necessary blobs? I don't have a clue about this stuff, I only build ROMs but now time has come that my device is unsupported so can you give me some tips, thanks.
This is interesting. Going to have to try this out tomorrow.
cikoleko said:
Can you go through the actual "porting" process because from what I understand you have done it? If I'm correct to port a ROM you need to have working ROM from other device? If yes, does that device have to be same manufacturer? Lets say I do have working AOSPA kitkat for my device so I need to get AOSPA lollipop and exchange the certain files and then I'll able to run it? Once again if it's like that then I use your tool and get necessary blobs? I don't have a clue about this stuff, I only build ROMs but now time has come that my device is unsupported so can you give me some tips, thanks.
Click to expand...
Click to collapse
If you don't have a clue then dont do it, please! Work your way up. First step in this hypothetical is to wait for aospa 5.0
Thanks a lot for this tool
just one thing.. i cant get the blobs for my wireless (wl12xx)
Rest all done
andynoob said:
Thanks a lot for this tool
just one thing.. i cant get the blobs for my wireless (wl12xx)
Rest all done
Click to expand...
Click to collapse
Is it possible that each wl12xx library only relies on AOSP libraries (has no dependencies?)
See if they can be built from source!
Sent from my LG-VS980 using XDA Free mobile app
JackpotClavin said:
Is it possible that each wl12xx library only relies on AOSP libraries (has no dependencies?)
See if they can be built from source!
Sent from my LG-VS980 using XDA Free mobile app
Click to expand...
Click to collapse
Manufacturer hasnt provided the source code(Kernel) . Anyways thanks a lot for this tool :good: :good:
how to use it?
by reading the detailed instructions?
Sent from my LG-VS980 using XDA Free mobile app
JackpotClavin said:
by reading the detailed instructions?
Sent from my LG-VS980 using XDA Free mobile app
Click to expand...
Click to collapse
should we adb pull /system first?
*edit
I did it! but where is the directory out?
J,
You are a life saver ! Subscribed. Will add link of thread to my signature. Will dance happily for some hours! :good:
Will seek therapy. :silly:
m

[Q] Informations for building a new Device tree for a unsupported Device

Hi Everybody,
I want to ask for some informations what is need to do to build SlimRom for a new device. I found a lot of informations about CM, but nothing is really in a way that I really know what I have to do at the end. So is there a Howto, which describes it a little bit more in detail? A lot of howtos was found which describe to get a build-system, and to generate something for a know device. But everybody then describes only: you have to get the vendor files, made your Board-config but only on a very high level.
What I did:
- set up a building-server on ubuntu.
- get Slim-Sources branch JB4.3, and build the version for galaxysmtd to be sure that the buildprocess is ok.
- get "Nonreallyfree"-Opensources from Samsung for my I8200, and try to put them in the right places, and try to implement all needed files in the device/samsung/i8200 folder.
Up to now I think I have everything in place more or less, but the system told me that there is no rule for make 'bacon', but lunch seems to work right with setting the variables...
Up to now I did not used the blobs of the devices. The question is, if that is needed if I have the sources from open Samsung?
I know, jb43 is not the newest, but I start here, because up to now the sources are based on that level, and the kernel have no selinux implemented... If this start point will work, then I will try to go ahead with higher versions... end goal will be Slimkat...
Any help is very much appreciated!!
BR
SP

[Q] Need Help with Compiling AOSP Nougat - Proprietary Binaries

So I've decided to give building Android a go, considering we've recently obtained the source code for the device in question (R1 HD) and no one else has done this yet for this device. I've been following this guide, since all the other guides I've found assume there is already a GitHub repo for your device. There's literally NOTHING out there regarding this device, aside from the kernel source we've obtained in the form of a .zip archive.
I've done everything up to and including pulling the 7.0.0 r1 source with the reop sync command, and I am now stuck on the Preparing to Build section. The first thing it talks about at this point is implementing proprietary binaries into my source. I have no idea where to find proprietary binaries for my R1 HD, let alone if they even exist out there to be implemented. Literally all I have regarding this device is the kernel source in a zip file. I can't find anything else out there nor do I really know what to look for.
Can anyone tell me what to do here? I've never compiled Android or even a kernel before, and I'd really like to get something out there for this device that others can base their work off of.

Is sources from the vendor required?

If the vendor (in this case Vodafone) don't provide sources, does it mean I'm unable to create a ROM for it?
Put it another way, is it possible to create a ROM using only a running device?
The Original Leppa said:
If the vendor (in this case Vodafone) don't provide sources, does it mean I'm unable to create a ROM for it?
Put it another way, is it possible to create a ROM using only a running device?
Click to expand...
Click to collapse
Yes, if you want to build a "true" custom ROM you will need the stock source code for your device.
If you can root, you can use adb or Terminal Emulator to do a "ROM dump", or dump just a copy of your system.img, then modify that system.img and then use adb to push the modified system.img to your device. It will be considered a modified stock ROM, it won't be a "custom" ROM but you can modify it quite heavily with things like Xposed, Gravity Box, and a few other good mods and themes.
Or you can get a copy of your stock firmware(not the same as source code), then find other devices with the exact same hardware that have a better version of Android than yours, then use your stock firmware to port the better version to work on your device.
Building a true custom ROM is "possible" without stock source code but it would require VERY extensive programming and developer knowledge to do it because you'd have to do every bit of it from scratch with no resources to work with.
Sent from my SM-S903VL using Tapatalk
So, I'm screwed, in terms of porting?
The Original Leppa said:
So, I'm screwed, in terms of porting?
Click to expand...
Click to collapse
It would help if you had stock firmware for your model then you can find another device with the same hardware architecture(chipset), if they are similar enough you can port it.
It's possible to port between devices that aren't exactly the same chipset but that also requires extensive developer knowledge.
If you aren't experienced then you're pretty much out of luck.
If you want to customize android devices then you need to get less obscure devices. Next time, research the device first to see if there is a known rooting method for it and whether there is custom development available for it before you get it. Or if you get a device that just came out, get a device that you are certain that developers will support, typically a flagship/popular device.
The cheap low-mid range devices usually don't get support from developers and the ones that do get support are not supported by real develoers, they are supported by members that took it on themselves to learn how to build android just so they can update their device but their work usually isn't exactly right due to their lack of experience.
Sent from my SM-S903VL using Tapatalk

Android SDK source code

Hello,
I'm looking for Samsung's Android SDK modifications for a particular device. Specifically, their changes to platform/frameworks. I.e. this stuff: android.googlesource.com/platform/frameworks/base/+/nougat-mr1.1-release/core/java/
I went to opensource.samsung.com under Mobile, searched for my device model number (SM-T560NU) and downloaded a zip file that had a Platform/frameworks but base changes are not there.
I know they've changed the code in some way because when I step through it in my IDE the line numbers do not match the Android source code (as a matter of fact they are completely off). Does anyone know of a way to get this code? I don't know much about building ROMs, is there a framework-base.jar that lives somewhere on the device I can pull?
Thanks.

Categories

Resources