<aside> 💡 Q: 2020 年了, 为什么选 android 9? A: TWRP 是比较流行的 recovery 工具, 也是进行 root 和安装 xpose 的有效工具. 它现在只支持到 android 9.
</aside>
以下基于全新安装的 ubuntu 20.04 系统进行, 在当前用户目录的 aosp 下存储所有文件. shell 建议使用 bash, 否则后续编译 idea 项目文件时会出现 ‘Couldn’t locate the directory development/tools/idegen’.
ubuntu 20.04
磁盘空间 300G. 其中 100G 源码, 编译后大概 210G
内存 16G, 据说内存小会导致编译失败
pixel 3 XL 欧版 (一定要买能解锁 bootloader 的版本, 否则无法刷机)
安装基础工具
sudo apt install -y python git curl bc bison zip \\
build-essential flex g++-multilib gcc-multilib gnupg gperf imagemagick \\
lib32readline-dev lib32z1-dev liblz4-tool lib32ncurses-dev libncurses5 libncurses5-dev libsdl1.2-dev libssl-dev \\
libxml2 libxml2-utils lzop pngcrush schedtool squashfs-tools xsltproc yasm zlib1g-dev libtinfo5
Android 源码存在于 google 代码仓库中, 称为 AOSP(Android Open Source Project).
AOSP 也使用 git 管理, 但是由于其规模庞大, 将不同的功能拆分到了多个仓库中. 因此无法通过一次 git 操作克隆整个项目. Google 团队为了解决每次要操作多个仓库的问题, 于是开发了 repo 这个工具. Google 用它管理来管理和开发 AOSP.
为了 clone 整个 AOSP, 第一步要安装 git 和 repo 工具:
# git
sudo add-apt-repository ppa:git-core/ppa
sudo apt update
sudo apt install -y git
# repo
mkdir ~/aosp
cd ~/aosp
curl <https://storage.googleapis.com/git-repo-downloads/repo> > ./repo
chmod a+x ./repo
AOSP 也有很多分支, 我们选择 9.0 最有一个版本 ‘android-9.0.0_r46’ 进行编译:
所有分支列表可以在这里查看: aosp tag
cd ~/aosp
repo init -u <https://android.googlesource.com/platform/manifest> -b android-9.0.0_r46
repo sync
国内可从清华大学下载:
export REPO_URL='<https://mirrors.tuna.tsinghua.edu.cn/git/git-repo>' repo init -u <https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest> -b android-9.0.0_r46
注意: 如果之前已经同步过, 切换到其他分支后会导致工作目录残留其他分支的代码, 导致编译失败. 这种情况下可以使用如下方式 clean:
repo forall -c git reset --hard repo forall -c git clean -dfx make clean