You'll need to get familiar with Git and Repo as well as How to build a GSI.
As a first step, you'll have to create and enter a folder with the appropriate name. To do that, run these commands:
mkdir YAAP
cd YAAP
repo init -u https://github.com/yaap/manifest.git -b fourteen
This adds necessary dependencies for the YAAP GSI.
git clone https://github.com/ahnet-69/treble_manifest.git -b yaap-14 .repo/local_manifests
repo sync --force-sync --optimized-fetch --no-tags --current-branch --no-clone-bundle --prune -j$(nproc --all)
Copy the patches folder to the ROM folder, and run this in the ROM folder:
patches/apply-patches.sh .
git am
, as the script often skips applying critical patches for some reason.Clone this repository and then copy YAAP.mk to device/phh/treble in the ROM folder. Then run the following commands:
cd device/phh/treble
bash generate.sh YAAP
You can speed up subsequent builds by adding these lines to your ~/.bashrc
OR ~/.zshrc
file:
export USE_CCACHE=1
export CCACHE_COMPRESS=1
export CCACHE_MAXSIZE=50G # 50 GB
BOARD_EXT4_SHARE_DUP_BLOCKS := true
This flag makes the blocks shared, and makes the build read-only. It ensures it fits on to all possible Treble-supported devices, since many devices have a small system partitions.
In the ROM folder, run this for building GAPPS:
. build/envsetup.sh
ccache -M 50G -F 0
lunch treble_arm64_bgN-userdebug
# Remove TARGET_BUILD_GAPPS=true if building vanilla.
TARGET_BUILD_GAPPS=true make systemimage -j$(nproc --all)
After compiling the GSI, you can run this to reduce the system.img
file size:
Warning
You will need to decompress the output file to flash thesystem.img
. In other words, you cannot flash this file directly.
cd out/target/product/tdgsi_arm64_ab
xz -9 -T0 -v -z system.img
If you face any conflicts while applying patches, apply the patch manually. For any other issues, report them via the Issues tab.
These people have helped this project in some way or another, so they should be the ones who receive all the credit: