-
usefull talk: https://www.youtube.com/watch?v=hQZz2PRNdxI
-
best way to learn android: port it to a dev board
get source
nix-shell -p git-repo
repo init -u https://android.googlesource.com/platform/manifest
- with -b you can specify the branch: eg: main (default), android-13.0.0_r35
- all branches can be listed with:
git ls-remote -h https://android.googlesource.com/platform/manifest.git
repo sync -j8
- downloads about 150G of source
robotnix
- use nix to build android
- working on my robotnix config: my-robotnix-work
Lineage OS
- lineage build FP4 without robotnix
- lineage build starlte without robotnix
- to build starlte
- git clone https://github.com/LineageOS/android_device_samsung_exynos9810-common ./device/samsung/exynos9810-common
- git clone https://github.com/LineageOS/android_device_samsung_starlte ./device/samsung/starlte
- cd devices/samsung/starlte
- ./extract-files.sh /path/to/mounted/system-and-vendor/see/extract/blobs/from/zips
- git clone https://github.com/LineageOS/android_device_samsung_slsi_sepolicy ./device/samsung_slsi/sepolicy
things i discovered
- android has it’s own language for the init system
- see: $AOSP-src/system/core/init/README.md
- in https://github.com/LineageOS/android/blob/lineage-21.0/default.xml you can search for paths in the aosp-src and find the coresponding git repo
- eg: “$AOSP-src/system/core” → https://github.com/LineageOS/android_system_core
- https://github.com/nmeum/android-tools
- an extra build system for some android tools, so you don’t have to download 150GB just to build the adb binary
- cuttlefish: https://2net.co.uk/blog/cuttlefish-android12.html
- https://www.youtube.com/watch?v=gPMfzgLUtKk
- different types of OTA = Over The Air update
- Block-based OTA: the content of the system partition is stored inside of an
.dat
/.dat.br
file as binary data. - File-based OTA: the content of the system partition is available inside a folder of the zip named
system
. - Payload-based OTA: the content of the system partition is stored as an
.img
file inside ofpayload.bin
. - ref: https://wiki.lineageos.org/extracting_blobs_from_zips
- Block-based OTA: the content of the system partition is stored inside of an
list of Android concepts
- RRO = Runtime Resouce Overlay
- VTS = Vendor Test Suite (aosp)
- GSI = General System Image (aosp)
- GKI = General Kernel Image (aosp)
- ACK = Android Common Kernel (aosp)
- STS = Security Test Suite (aosp)
- CTS = Combatability Test Suite (aosp)
- https://android.googlesource.com/platform/sdk/+/master/docs/howto_build_SDK.txt
- emulator: https://android.googlesource.com/platform/external/qemu/+/2db80f7c1921a6f5d48b998378e3792e16c968a4/README.md
- CHRE = Context Hub Runtime Environment
- AOA = Android Open Accessory protocol
- ART = Android Runtime
- PMML = Predictive Model Markup Language
- AWT = Abstract Window Toolkit (java)
- m command (AOSP)
errors i run into with aosp
- lineage-java-NullPointerException AOSP recovery ImageGenerator
- qt plugin problems android emulator
- lineage-prop-file-permission-denied
- robotnix open file limit problem
build commands
- starlte
- nix build ../config/#robotnixConfigurations.s9.config.build.debugEnterEnv -o debugEnterEnv —option max-recursion-level 1000000 $nl —show-trace