Android distributions

Reviews

Anbox

Manifest: https://github.com/anbox/platform_manifests/blob/anbox/default.xml
Android base: 7.1.1_r13
Based on: AOSP

Goals:

Extra repositories (overridden or added):

path URL Comments
art https://github.com/anbox/platform_art
bionic https://github.com/anbox/platform_bionic
frameworks/av https://github.com/anbox/platform_frameworks_av
frameworks/base https://github.com/anbox/platform_frameworks_base
frameworks/native https://github.com/anbox/platform_frameworks_native
frameworks/opt/net/wifi https://github.com/anbox/platform_frameworks_opt_net_wifi
hardware/libhardware https://github.com/anbox/platform_hardware_libhardware
hardware/libhardware_legacy https://github.com/anbox/platform_hardware_libhardware_legacy
system/core https://github.com/anbox/platform_system_core
system/netd https://github.com/anbox/platform_system_netd
system/vold https://github.com/anbox/platform_system_vold
vendor/anbox https://github.com/anbox/anbox

Android x86

At the time of writing, the most recent images are RC images for Android 9, but there are branches for Android 10.

As they use (mostly?) upstream kernels, they sometimes have interesting code.

Source code: https://git.osdn.net/view?a=project_list;pf=android-x86
Manifest: git://git.osdn.net/gitroot/android-x86/manifest.git

Branches1:

Branch Android version
q-x86 10.0
pie-x86 9.0
oreo-x86 8.1
nougat-x86 7.1
marshmallow-x86 6.0
lollipop-x86 5.1
kitkat-x86 4.4
jb-x86 4.3
ics-x86 4.0
honeycomb-x86 3.2
gingerbread-x86 2.3
froyo-x86 2.2
eclair-x86 2.1
donut-x86 1.6
cupcake-x86 1.5

1 https://www.android-x86.org/source.html

AOSP

AOSP doesn't support many devices, but it seem to support some devboards.

The advantage is that in general devboards are well supported by upstream kernels.

Supported devboards1?:
Devboard Freedom issues Comments
Beagleboard-X15 No free GPU driver Well supported by GNU/Linux, free bootloader
Cuttlefish emulator ? ?
Other ? ?

The official documentation also mentions some devboards .

1 Some of the devboards in this page are probably supported: https://wiki.linaro.org/AOSP#AOSP_Dev_Board_Reference_Information

AOSP Mainline

website: https://github.com/aospm
manifest: https://github.com/aospm/android_local_manifests/blob/main/aospm.xml

Repositories:

Path URL Comments
device/generic/sdm845 https://github.com/aospm/android_device_generic_sdm845 Use prebuilt kernels
external/tinyhal https://github.com/aospm/tinyhal Generic HAL1
external/vibrator-ff https://github.com/aospm/external_vibrator-ff Generic HAL1

1 https://aosp-developers-community.github.io/#generic-hal-efforts

CustomROMs

CustomROMs seem to be a space for unofficial port of LineageOS. The idea is probably to develop the port until they manage to meet LineageOS's device-support-requirements.md . When the requirements are met, they are probably included in LineageOS directly.

Interesting ports:

DivestOS Mobile

This distribution is based on LineageOS. While they seem to reuse nonfree software to make the hardware work, they spent some time cleaning up LineageOS code itself.

For instance it contains patches to remove privacy issues and nonfree software included in CyanogenMod or LineageOS.

As we need to do that too in Replicant as long as we use LineageOS as base, it would be interesting to collaborate more with DivestOS on that part.

Web site:
https: https://divestos.org/
Onion: http://6sdlxbqgcxdbkvysoir2qvqqs5ro3fxgyl3phvuphcdyklv7rg57jhid.onion

Fairphone

As October 2020, they are porting the Fairphone 2 to Android 9. However to do that, they are using 3.4 kernel and not any upstream kernels.

In addition, they don't seem very interested in free software bootloaders, and the Fairphone 1 and 2 use Qualcomm System On a Chip.

However they are probably interested in free software libraries to make the port to newer Android versions easier.

GLODroid

Based on: AOSP
Manifest: https://github.com/GloDroid/glodroid_manifest/blob/master/glodroid.xml

device/glodroid repository

url: https://github.com/glodroid/glodroid_device.git

Content:

Path description Comments
common/ * low memory configuration
* selinux policies
* Other (TODO)
hals/power/ power management (DVFS, CPU boost, etc)
hals/usb-aidl/ USB gadget HAL It seems to use the same API than our scripts.
It also look very generic (for instance it uses
the Google/Android VID/PID).
hals/usb-gadget/
platform/kernel/kernel.mk Kernel build system Can it be moved?
platform/uboot/uboot.mk u-boot build system Can it be moved?
pinephone/lights/ LEDS HAL Is there a generic LED HAL ?
pinephone/reference-ril/ AT ril based on the reference RIL We could use it for now, until we manage to use QMI
pinephone/rild/
pinephone/vibrator/ Vibrator HAL AOSP Mainline has a separate vibrator

Forked repositories

Path URL Comments
external/libcamera https://github.com/glodroid/glodroid_forks.git
external/boost https://github.com/glodroid/glodroid_forks.git
external/libyaml https://github.com/glodroid/glodroid_forks.git
external/libyuv_chromium https://github.com/glodroid/glodroid_forks.git
external/iio-sensors-hal https://github.com/glodroid/glodroid_forks.git
external/minigbm https://github.com/glodroid/glodroid_forks.git
external/drm_hwcomposer https://github.com/glodroid/glodroid_forks.git
external/mesa3d https://github.com/glodroid/glodroid_forks.git
external/u-boot https://github.com/glodroid/glodroid_forks.git
external/tinyhal https://github.com/glodroid/glodroid_forks.git
kernel/glodroid-megous https://github.com/glodroid/glodroid_forks.git
kernel/glodroid-megous-edge https://github.com/glodroid/glodroid_forks.git
kernel/glodroid-broadcom https://github.com/glodroid/glodroid_forks.git
kernel/glodroid-stable https://github.com/glodroid/glodroid_forks.git
kernel/glodroid-modules/rtl8189es https://github.com/glodroid/glodroid_forks.git
kernel/glodroid-modules/rtl8189fs https://github.com/glodroid/glodroid_forks.git

Toolchains repositories

Path URL Comments
prebuilts/gcc/linux-x86/arm/gcc-linaro-arm-linux-gnueabihf https://github.com/glodroid/linaro_gcc_prebuilts.git
prebuilts/gcc/linux-x86/aarch64/gcc-linaro-aarch64-linux-gnu https://github.com/glodroid/linaro_gcc_prebuilts.git
prebuilts/gcc/linux-x86/arm/gcc-linaro-arm-eabi" https://github.com/glodroid/linaro_gcc_prebuilts.git
prebuilts/gcc/linux-x86/or1k/gcc-linux-or1k" https://github.com/glodroid/linaro_gcc_prebuilts.git

bootloader related repositories

Path URL Comments
external/crust-firmware/arm-trusted-firmware https://github.com/crust-firmware/arm-trusted-firmware.git
external/crust-firmware/crust https://github.com/crust-firmware/crust.git

Other repositories

It also contains various repositories for nonfree firmwares and nonfree bootloader components (BL1, etc), and a repository with just APKs (this might be an issue for license compliance).

LineageOS

See device-support-requirements.md for more information on LineageOS expectations.

Replicant has a script that is able to parse the LineageOS wiki data . That can be useful to find information on devices supported by LineageOS.

The devices supported by LineageOS 16 have either:

It may be because they rely on nonfree software to support devices, which has not been ported to Android 9, or may be because they need more time to add devices with other SOCs like exynos.

Waydroid

Waydroid consist in some host tool that can containerize an Android distribution, and some changes on top of LineageOS.

Some repositories would only be useful if we decide to integrate Waydroid in Replicant to have some FSDG compliant way to run Android applications on top of GNU/Linux:

There is some interest in Guix about having something like that as a patch serie was sent for adding the Waydroid host part in Guix.

What would be more interesting for Replicant as-is that in android_hardware_waydroid2, there is libraries that work with upstream kernels like the vibrator library. We also have our own vibrator library but it would probably be a good idea to share the maintenance somehow.

1 https://github.com/waydroid/android_hardware_waydroid/blob/lineage-18.1/audio/audio_hw.c

2 https://github.com/waydroid/android_hardware_waydroid

Building a collaboration with other Android distributions

Given that:

It could be a good idea to share the maintenance of the code used to make Replicant 9 with other distributions.

Comparison

Comparison of distributions

AOSP and LineageOS

Feature AOSP LineageOS
Code quality Better than LineageOS
Documentation Better than LineageOS
root Not sure if supported or not Supported
Minor release versioning supported with Git tags Not supported.
For instance frameworks/native has no LineageOS tags (only cm-1x tags) and has no other branch for lineage OS 16.0 than the lineage-16.0 branch, as the other branches name are for other things. This was confirmed after running 'git fetch github' in frameworks/native to fetch the other branches that are not fetched by repo by default.
Despite that, some code was even merged in after the lineage-16.0 release:
commit 22abc3cf4077644463a2dc1c59a5a74e9518ea16
Merge: 9e96d54 8a6b6c3
Date:   Sat Jul 13 18:57:45 2019 +0200

    Merge remote-tracking branch 'aosp/pie-gsi' into lineage-16.0-pie-gsi
GUI features for developers
* Advanced reboot
? Supported
Integrated kernel builds Unsupported Supported