第一:环境准备:
OS系统版本:macOS 10.15
xcode版本:Version 11.4
Jdk版本:1.8.0_221
Python版本:3.6/2.7
AOSP源码版本:android-9.0.0_r40
第二:源码下载注意事项:
1.首先建立一个区分大小写的磁盘映像,避免后面Git 相关命令的不知别等等(最好使用移动ssd,直接使用mac磁盘工具格式化支持大小写格式就可以了),如果不新建,后面我们就需要去修改一些配置文件了,新建的流程可以参考官网的文档:
https://source.android.google.cn/setup/initializing.html
2.下载AOSP代码,可以使用清华的镜像源:
mkdir ~/bin
PATH=~/bin:$PATH
curl https://mirrors.tuna.tsinghua.edu.cn/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
第二:下载源码
在google官网上https://source.android.com/setup/start/build-numbers找到对应的android版本标记
我需要的是pixelXL,找到标记为android-9.0.0_r40,
安装好repo之后本人使用的是下载指定版本的命令:
进入外置ssd,
mkdir android-9.0.0_r40_kernel-pixelXL
cd android-9.0.0_r40_kernel-pixelXL
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-9.0.0_r40
repo sync
漫长的等待,需要几个小时
第三:下载对应版本的Binary Drive
下载地址:https://developers.google.com/android/drivers#walleye
下载Binary Drive需要知道对应的细分版本号,这里得到版本号的方法有两种
1)根据前面查找到的细分版本--- PQ3A.190605.003 找到对应的Binary Drive
- cat build/core/build_id.mk,可以看到当前源码的版本号为 PQ3A.190605.003
点击Link进行下载,最终会下载到两个tar.gz压缩包,解压后是两个.sh脚本
extract-google_devices-marlin.sh
extract-qcom-marlin.sh
将上面的两个脚本放到源代码根目录下,执行该两个脚本,不停回车直到输入:I ACCEPT,最终binary都会自动下载到vendor目录下,最终所有的AOSP代码算是下载完成了,接下来开始编译代码。
优先看最底下的错误信息,可以节约时间
第四:AOSP编译:
1,配置jdk
2,安装xcode最新版(xcode含有编译需要的工具)
3, sudo port install gmake git gnupg
4, sudo port install bison
编译代码
进入代码根目录
source build/envsetup.sh
lunch( 选择 43. aosp_marlin-userdebug )
m (m 命令系统会根据cpu性能自动选取需要使用的线程,你也可以根据cpu多少使用 make -jN, N表示cpu个数x2)
下面是碰到的坑:
问题一:找不到对应的MacOSX.sdk
Could not find a supported mac sdk: [“10.10” “10.11” “10.12” “10.13”]
解决方式一:
有人说需要去源码的文件/Volumes/android/build/soong/cc/config/x86_darwin_host.go:添加上当前电脑的MacOS sdk版本增加10.15
darwinSupportedSdkVersions = []string{
"10.10",
"10.11",
"10.12",
"10.15",
这种方式对于我来说还是会出现错误,报错说是
ld: symbol(s) not found for architecture i386
clang-6.0: error: linker command failed with exit code 1 (use -v to see invocation)
所以我使用了下面的解决方式二
解决方式二:
我的系统版本是10.15
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs 目录内只有MacOSX10.15.sdk,你需要到 https://github.com/phracker/MacOSX-SDKs/releases 下载需要的版本
我这里下载的是MacOSX10.12.sdk,解压复制到如下目录:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs
问题二:出现以下错误
这里官方都有提示可以这样修改,找到文件:源文件根目录/system/sepolicy/tests/Android.bp,删除掉一行代码:
最后刷机烧录镜像
google解锁指导:https://source.android.com/setup/build/running#unlocking-the-bootloader
刷机之前如果已经关闭了终端需要先进入到代码根目录然后执行:
source build/envsetup.sh
lunch 43(自己需要的编号)
然后在执行以下命令
adb reboot bootloader
解锁手机:fastboot flashing unlock
刷入镜像前我们首先双清一下:
fastboot erase cache
fastboot erase userdata
刷入编译的所有镜像:fastboot flashall -w
单独刷入某个img:
cd out/target/product/marlin
fastboot flash boot_a boot.img
fastboot flash boot_b boot.img
fastboot flash system system.img
fastboot flash system_b system_other.img
fastboot flash vendor vendor.img
fastboot flash userdata userdata.img
刷入完后执行 fastboot reboot 重启手机即可。
这部分介绍如何root Pixel XL
1,首先需要下载三方recovery以及magisk
twrp:https://twrp.me
magisk:https://github.com/topjohnwu/Magisk/releases
下载twrp的时候需要区分手机型号,该手机有美版,以及欧版(国际版)。可以再关于手机->监管标签查看,美版(4100,2100)欧版(4200,2200),根据型号下载对应型号的twrp。
1,将下载的magisk.zip以及twrp.zip push 到手机根目录即可
2,使用 adb reboot bootloader
进入临时twrp,看到recovery时输入fastboot boot twrp.img
,twrp.img前面需要加上路径。
3,点击install,选择twrp.zip滑动滑块安装,返回继续选择magisk.zip安装,完成以后重启。
4,查看是否安装了Magisk Manager app,如果没有手动下载安装。安装以后使用梯子,然后打开该app,查看是否安装成功。
碰到的坑:
我的pixel xl(2100)按照查询显示的是美版,但是下载美版的twrp,进入临时twrp点击install的时候根本找不到push进来的zip。下载最新的欧版3.3.1刷入永久twrp以及magisk显示成功,但是实际是失败的。最终使用的是欧版3.2.2版本的img以及zip,此时也可以成功刷入magisk.zip了。
网友评论