A build system for AOSP and AOSP-based ROMs that allows for easy customization, and automation while optimizing for reproducible builds.
By default this repo will build latest vanilla AOSP as a baseline, which also serves as the baseline E2E test.
Any third party rom project need only include their own customized version of the Makefile and config.yml from this repo, along with any desired patches.
Please join us on IRC: ircs://irc.hashbang.sh/#!os
- 100% Open Source and auditable
- Except for mandatory vendor blobs hash verified from Google Servers
- Automated build system:
- Completely run inside Docker for portability
- Customize builds from central config file.
- Automatically pin hashes from upstreams for reproducibility
- Automated patching/inclusion of upstream Android Sources
|Pixel 3 XL||Crosshatch||TRUE||FALSE||AVB 2.0||Soon™|
|Pixel 3||Blueline||FALSE||FALSE||AVB 2.0||Soon™|
|Pixel 2 XL||Taimen||TRUE||FALSE||AVB 1.0||Soon™|
|Pixel 2||Walleye||FALSE||FALSE||AVB 1.0||Soon™|
unzip crosshatch-PQ1A.181205.006-factory-1947dcec.zip cd crosshatch-PQ1A.181205.006/
- Unlock "Developer Settings" by tapping "About -> Build" several times
- Ensure "Enable OEM Unlocking" is enabled under "Developer Settings".
- Unlock the bootloader.
adb reboot bootloader fastboot flashing unlock
- Repeat steps #1 and #2
- Flash new factory images
- Linux host system
- x86_64 CPU
- 10GB+ available memory
- 350GB+ available disk
make DEVICE=crosshatch fetch
Generate Signing Keys
Each device needs its own set of keys:
make DEVICE=crosshatch keys
Build Factory Image
Build flashable images for desired device:
make DEVICE=crosshatch build release
Do basic cleaning without deleting cached artifacts/sources:
Clean everything but keys
- Build a given device twice from scratch and compare with diffoscope
- Future: Run Android Compatibility Test Suite
Create a shell inside the docker environment:
Output all untracked changes in android sources to a patchfile:
make diff > patches/my-feature.patch
Build latest config from upstream sources:
make DEVICE=crosshatch config manifest
Use at your own risk. You might be eaten by a grue.