【Android安全】Ubuntu 下载、编译 、刷入Android-8.1.0
0. 环境准备
-
Ubuntu 16.04 LTS(预留至少95GB磁盘空间,实测占94.2GB)
-
Pixel 2 XL
要买欧版的,不要美版的。
欧版能解锁BootLoader、能刷机。
美版IMEI里一般带“v”或者"version",这样不能解锁BootLoader、也不能刷机。
-
想刷入Android-8.1.0_r1
1. 下载源码
参考:https://blog.csdn.net/aichu6610/article/details/116071003
注意改用 python3 ~/bin/repo init -u https://android.googlesource.com/platform/manifest -b android-8.1.0_r1
1.1 安装并配置git和repo
安装git
sudo apt install git git config --global user.name “your name” git config --global user.email “XXX@XXX.com”
安装并配置repo
sudo apt install curl mkdir ~/bin PATH=~/bin:$PATH curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo chmod a+x ~/bin/repo
安装JDK 8
sudo apt update sudo apt install openjdk-8-jdk
创建文件目录
mkdir /home/tom/Android-8.1.0_r1 cd /home/tom/Android-8.1.0_r1
修改配置
找到~/bin/repo文件,修改如下配置
REPO_URL = ‘https://mirrors.tuna.tsinghua.edu.cn/git/git-repo’
在终端下运行
git config --global url.https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/.insteadof https://android.googlesource.com
执行gedit ~/.bashrc然后在末尾添加:
export PATH=~/bin:$PATH export REPO_URL=‘https://mirrors.tuna.tsinghua.edu.cn/git/git-repo’
运行 source ~/.bashrc 使环境变量生效
1.2 使用repo同步代码
Repo是谷歌提供的一套python脚本,封装了一系列git命令,用来管理多个git库
初始化repo仓库
python3 ~/bin/repo init -u https://android.googlesource.com/platform/manifest -b android-8.1.0_r1
如果想用其他版本,在这里查询:
https://source.android.com/source/build-numbers?hl=zh-cn
同步代码
repo sync -j8
这个过程会持续数个小时
-j8貌似是并行的意思,如果报错可以去掉-j8试试
中间有报错,但不知道是否有影响
某些时刻输出过长,所以最后就多出来一截 应该无大碍
以防万一,又 repo sync 了几遍
2. 准备驱动脚本
地址:https://developers.google.com/android/drivers
要找 android-8.1.0_r1 的 pixel 2xl的驱动
android-8.1.0_r1就是OPM1.171019.011
参考:https://source.android.com/docs/setup/about/build-numbers?hl=zh-cn#source-code-tags-and-builds
所以锁定:
https://developers.google.com/android/drivers#taimenopm1.171019.011
将上面两个link的内容下载下来,得到两个sh:
extract-google_devices-taimen.sh extract-qcom-taimen.sh
3. 编译
3.1 编译
source build/envsetup.sh
将下载的两个驱动脚本 放入源码根目录下 并执行
./extract-google_devices-taimen.sh ./extract-qcom-taimen.sh
一顿敲回车(注意不要敲过油了)
最后敲入I ACCEPT
执行lunch
lunch
我的是Pixel 2 XL,也就是 taimen,所以选27
(各机型的对照参考:https://blog.csdn.net/guyongqiangx/article/details/123971895)
执行 time make
(这里不并行了,并行容易出bug,如果想并行可以time make -j4 )
time make
3.2 报错:Assertion `cnt
[ 4% 5148/105788] Lex: applypatch