Fork versus non-fork? - Android Q&A, Help & Troubleshooting

From the user's point of view, my Zenfone 2 seems to have more customized features than my OnePlus 2. Why is OnePlus 2's OxygenOS considered to be a fork of Android, while the OS on the Zenfone is "real" Android? In other words, what makes something be called a "fork" of the Android operating system?

A fork is not Android related.
A fork is simply the fact that someone has posted the "Android source code" and someone else used it to make a new project (new rom)
In this case any Android rom ARE forks of Android, including OxygenOS. If someone port OxygenOS to another device, it will be a fork of it, This person could then add, or remove feature from the rom.
Most of the time, port doesn't modify the features

Related

Project Treble and unofficial roms/updates

Hello!
I have been following annual Google I/O 2017 and heard about all the benefits of Google's Project Treble.
I cannot help but wonder how are developers (for example here at XDA) able to create custom roms or unofficial Android updates. Why Google can't make official Android Nougat update for Nexus 7 2013, but you here at XDA can. What is different between your work and Google's when it comes to these things, as far as neither has access to hardware manufacturer's code support.
I have to say I am not a professional software developer, so I understand if this topic is beyond my comprehension.
Thank you!
"Why Google can't make official Android Nougat update for Nexus 7 2013"
Planned obsolescence.
"neither has access to hardware manufacturer's code support"
Google is obliged to release kernel source code because Linux(the kernel powering Android) is released under the GPL. The kernel is responsible for letting Android "talk" to the hardware. Developers at XDA can then modify the open-source kernel to "fit" newer versions of Android.
I'd like to chime in on this.
Let's use the Nexus 7 2013 as an example. The difference between what an official build of Nougat from Google would be and what a build of Nougat from XDA is that the Google released one will have updated devices drivers that are made specifically for Nougat, while the XDA released one simply uses the older device drivers and hope they work. In some cases they work flawlessly (mostly on Nexus devices), however other times there are things that don't work so they either need to be disabled or worked around. So essentially a Google released OS has everything updated and tested to work with the new OS, while XDA releases are more 'hacked' together to work (simply because the device drivers aren't Open Source). Google may not have access to the hardware drivers, but they still get them updated.
Now let's touch on Project Treble (and why I am so excited about it). Instead of each and every device driver needing to be upgraded and tested for each new OS version, the OS version will specify which version of the drivers (HAL's) will work with the OS. This means there will be a separate space where all the device drivers will reside, and the OS will simply load those when booting (no more proprietary binary blobs to include in the ROM! hopefully...).
This means on any Project Treble compatible device (all phones that ship with Oreo, and some that update to Oreo) with an unlocked bootloader, a user can simply compile AOSP and flash it directly to the device with no modifications and have the device work. I believe this is actually a requirement to pass Google's certification process for new devices with Oreo. That means, say, with the LG v30 if the bootloader is unlocked, there can be an AOSP ROM on day one of its release.
So instead of Android being strictly a per device compile, it is just a general compile (sans device specific features). However, this doesn't remove the old driver issue. If the drivers in their respective partition no longer are updated by the manufacturer, the later AOSP code will need to be modified to work around these (and accept them). This is still easier in my opinion than the binary blobs.
As for official updates, Project Treble allows device hardware manufacturers to work on updating the device drivers while the OS Dev (Samsung, etc) works on updating their OS. So it is a parallel development instead of a serial one (hardware AND os instead of hardware THEN os).
A question.
Do the Nexus 5X devices have the Treble system or project incorporated with Oreo?
I do not understand the other manufacturers that cheaper excuses are giving, it is true that they are not obliged but I think it would be good practice, maybe they think as before that you will not buy them a phone.
Does someone make a Change.org or similar campaign to ask all Android manufacturers to make a minimum effort?

Willing to build Lineage OS... But will require community help

As there is no interest nor popularity on this device to stimulate a healthy developer community, I have decided to look into ROM building and what is required. I have followed this three part video in explaining how to build Lineage OS from source to a device. I have made it to part two where I download the Lineage OS source code to my Linux work-space. Where I get stuck is adding the source to the ROM. The question now is How do I attach the Lineage OS source code to the kernel source code for this device?
Information sources...
Part 1 https://www.youtube.com/watch?v=iZmjOlUq_3c&t=1s
Part 2 https://www.youtube.com/watch?v=MGI3NSJFtKA
Part 3 https://www.youtube.com/watch?v=AJCgOHtli64&t=153s
Current Kernel source code from Asus https://www.asus.com/ca-en/Phone/ZenFone-4-ZE554KL/HelpDesk_Download/
Just ordered one. I've never built Lineage OS either, but maybe we can work together to figure it out.
I have the lineage OS sorce code ready to compile on my system. I just need to know how to add the nesary kernel with it. Any ideas?
Any progress?
Sent from my [device_name] using XDA-Developers Legacy app
Nope! Unless you have anything to contribute.
someaguy said:
As there is no interest nor popularity on this device to stimulate a healthy developer community, I have decided to look into ROM building and what is required. I have followed this three part video in explaining how to build Lineage OS from source to a device. I have made it to part two where I download the Lineage OS source code to my Linux work-space. Where I get stuck is adding the source to the ROM. The question now is How do I attach the Lineage OS source code to the kernel source code for this device?
Click to expand...
Click to collapse
I also looked into building Lineage, seems like it's going to be more than I'm willing to commit to, so I'll share what I found in hopes that it will help you or anyone else move forward with this.
I found this restored CM wiki page on the subject: fat-tire.github.io/porting-intro.html (Sorry, can't make it clickable since I'm new)
The gist seems to be that you need to make three directories in the lineage source (note z01kd appears to be the codename for the Zenfone 4 based on the build.prop file I pulled from my phone)
device/asus/z01kd - Device file tree
kernel/asus/z01kd - Kernel
vendor/asus/z01kd - Proprietary blobs
In the above CM guide, it says to use ./build/tools/device/mkvendor.sh to generate the Device file tree from a boot.img file extracted from an update.zip (from Asus) or extracted from the phone, but that didn't work with the version I was trying to do (15.1), mkvendor.sh wasn't there at all. So I explored option #2 which was to fork an existing device file tree repo from a similar device and tweak it for the device you want to port and I found that the Zenfone Max Pro M1 (X00TD) (github.com/LineageOS/android_device_asus_X00TD) is the closest lineage supported device that we could copy from (at least that I could find). It looks like you might even be able to use the same kernel as that device (github.com/LineageOS/android_kernel_asus_sdm660) because the SOCs are pretty close (Snapdragon 630 vs Snapdragon 636), but you may need to use the stock kernel that you linked to in your original post, not sure.
There's a part in the lineage docs about building from source (only for supported devices) (wiki.lineageos.org/devices/X00TD/build#extract-proprietary-blobs) about extracting proprietary blobs (wiki.lineageos.org/extracting_blobs_from_zips.html) for the vendor/asus/z01kd folder. It said that you could use a lineage update.zip, but I was able to do it with the Asus update.zip. Don't know if that will work or not, but it seems like the only option since the Zenfone 4 doesn't have a lineage update.zip to pull proprietary blobs from.
And that's about as far as I got
Once you have those three folders set up and properly configured you should in theory be able to build it.
Update 9/3/2018
I just found the device file tree and kernel for Zenfone 4 that @shakalaca used to build TWRP. Looks like there are some different naming conventions from what lineage would expect (omni_Z01K.mk vs lineage.mk), but a lot of the stuff looks to be the same (eg BoardConfig.mk) and the files that do have a different name look like they're roughly equivalent.
github.com/TeamWin/android_device_asus_Z01K - Zenfone 4 TWRP device file tree
github.com/shakalaca/android_kernel_asus_ze554kl - Zenfone 4 TWRP kernel
Between these and the above X00TD device file tree and kernel links, we should be able to get pretty close to a working config.
What if you compile what you have and see if it boots on your device?
someaguy said:
What if you compile what you have and see if it boots on your device?
Click to expand...
Click to collapse
Sorry...I already deleted the environment I had set up, to reclaim the 50+ GB of disk space.
If it's any consolation, I never made it far enough for it to build successfully.
I am trying to build Lineage OS too
In this guide(https://forum.xda-developers.com/chef-central/android/guide-android-rom-development-t2814763)
It says we need three files(device tree,kernel,vendor) to build it.
We have kernel and device tree from github(https://github.com/TeamWin/android_device_asus_Z01K)
but we still need vendor from our device,and the commend under this guide(https://www.isthnew.com/archives/build-lineageos.html) says that we can get vendor files by running "extract-files.sh".
But where can we find that?
(Sorry for my bad English
rol.
try to look here.https://forum.xda-developers.com/pr.../tool-capire-le-treble-terble-vendor-t3774629
I have tried that CLT project,but it didn't work
Maybe use this?
https://forum.xda-developers.com/axon-7/development/tool-party-v0-1-vendor-partition-t3831517

A bare operating system

Hello... Since I'm not very familiar with cell phones I'm curious about something. With a desktop computer, one can build their own or have a manufacturer type ( Dell, HP and so ) Now if you take the custom build system you basically can decide which OS you want, why can't cell phones be similar to that be able to install whichever OS you like, Or can you? Like in Android is it possible to install just a basic OS onto a phone? one that doesn't have let's say Google ( Google store)? Is there an Android build without Google? Also, does Android have an OS with its own browser, if not, why not? thanks
Dude905 said:
Hello... Since I'm not very familiar with cell phones I'm curious about something. With a desktop computer, one can build their own or have a manufacturer type ( Dell, HP and so ) Now if you take the custom build system you basically can decide which OS you want, why can't cell phones be similar to that be able to install whichever OS you like, Or can you? Like in Android is it possible to install just a basic OS onto a phone? one that doesn't have let's say Google ( Google store)? Is there an Android build without Google? Also, does Android have an OS with its own browser, if not, why not? thanks
Click to expand...
Click to collapse
You're thinking about it along the correct route. There are plain, unbranded Android builds known as Vanilla Android. These are the builds you see on Nexus and Pixel devices, built from the AOSP (Android Open Source Project) and have no carrier or OEM bloat.
If you're looking for a lightweight Android OS with no GApps (Google Apps), there are a ton of custom Android builds available, the most popular in the world being LineageOS. However, it should be noted that you can't simply flash a vanilla or custom Android build to your device and expect it to boot and function properly. Android ROMs need to be ported to a specific device. This is due to the vast hardware differences between various manufacturers and models.
To see if any custom Android builds are available for your particular device, search your model device in the Search Plus option. If any custom ROMs, kernels, recoveries, etc., are available for your device, you'll find them here on XDA.
MotoJunkie01 said:
You're thinking about it along the correct route. There are plain, unbranded Android builds known as Vanilla Android. These are the builds you see on Nexus and Pixel devices, built from the AOSP (Android Open Source Project) and have no carrier or OEM bloat.
If you're looking for a lightweight Android OS with no GApps (Google Apps), there are a ton of custom Android builds available, the most popular in the world being LineageOS. However, it should be noted that you can't simply flash a vanilla or custom Android build to your device and expect it to boot and function properly. Android ROMs need to be ported to a specific device. This is due to the vast hardware differences between various manufacturers and models.
To see if any custom Android builds are available for your particular device, search your model device in the Search Plus option. If any custom ROMs, kernels, recoveries, etc., are available for your device, you'll find them here on XDA.
Click to expand...
Click to collapse
Thank you for your input it gave me more of an understanding and I will do as suggested

Question(s) about android x86

We can install custom roms of android to unlock certain features, install custom recoveries, custom anything at the cost of product support linked to the manufacture of said phone, but im a bit curious of android x86 and what modding capabilities we have with it. Can we modify it like we have to do to get something like LineageOS running on an android phone, or is something like that only possible by compiling the android OS image and modifying that to be LineageOS or whatever custom rom instead?

Porting PixelExperience to my Mi 10S with known device tree?

I have a Mi 10S where I really want to have an AOSP-like ROM installed. However, this model was only released in China so there isn't a corresponding board here at XDA where I can find some decent ones off the shelf. I am personally familiar with programming so I think it would be a good idea to port one myself. I choose Pixel Experience because it's popular and it has quite some documentation.
To my knowledge to port a ROM I need both a base ROM and the source code for the new ROM. I now have in hand a fastboot image of Mi 10S's official MIUI. Furthermore, Xiaomi seems to be open-sourcing its kernel source code and device tree (which I suppose is good news?) On the Pixel Experience end, I follow the guide on their website and cloned and initialized their repo. It seems that all I need then is to create a device configuration for PE's build system, but I don't know where to start.
I do know that PE has a port for Mi 11X (alioth), which uses the same CPU as my phone. Interestingly both models seem also to be sharing the same device tree and kernel (in the same branch on Xiaomi's github repo). I suppose then I can copy Mi 11X's device configuration for PE and tinker with it a bit. However, the structure of Pixel Experience's device configuration doesn't really resemble the device tree I see on Xiaomi's website (I suppose either of them is "non-standard"?), so I am stuck not doing what to do next. Any suggestions?
Well did you tried a generic system image
Generic system images | Android Open Source Project
source.android.com
I have the same problem. I don't know where to begin after I created build environment as per Pixel Experience build tutorial.
Anyone can shed some light?
Null Pointer Exception said:
I have a Mi 10S where I really want to have an AOSP-like ROM installed. However, this model was only released in China so there isn't a corresponding board here at XDA where I can find some decent ones off the shelf. I am personally familiar with programming so I think it would be a good idea to port one myself. I choose Pixel Experience because it's popular and it has quite some documentation.
To my knowledge to port a ROM I need both a base ROM and the source code for the new ROM. I now have in hand a fastboot image of Mi 10S's official MIUI. Furthermore, Xiaomi seems to be open-sourcing its kernel source code and device tree (which I suppose is good news?) On the Pixel Experience end, I follow the guide on their website and cloned and initialized their repo. It seems that all I need then is to create a device configuration for PE's build system, but I don't know where to start.
I do know that PE has a port for Mi 11X (alioth), which uses the same CPU as my phone. Interestingly both models seem also to be sharing the same device tree and kernel (in the same branch on Xiaomi's github repo). I suppose then I can copy Mi 11X's device configuration for PE and tinker with it a bit. However, the structure of Pixel Experience's device configuration doesn't really resemble the device tree I see on Xiaomi's website (I suppose either of them is "non-standard"?), so I am stuck not doing what to do next. Any suggestions?
Click to expand...
Click to collapse
I have a version shared by the Chinese. However, it has a fingerprint error

Categories

Resources