简介
AOSP(Android Open Source Project)是Android系统的开源版本,任何人都可以下载、编译和修改。手头上有一台Pixel 4XL,尝试编译AOSP并将其烧录到的设备上。
准备工作
在开始之前,您需要确保您的电脑满足以下条件:
- 足够的存储空间:编译AOSP需要大量的存储空间,建议至少预留200GB的空间。
- 足够的RAM:编译AOSP也需要大量的RAM,建议至少16GB的RAM。
- 一台运行Linux或macOS的电脑:Windows系统不适用于编译AOSP。
- TYPEC线一条,
- 一部快废了的pixel手机
救砖: 烧录变砖的风险很高.
https://developers.google.cn/android/images这里下载对应版本的固件,并进行解压
虽然找得到固件, 但是并不能正常下载下来
We’re sorry…
… but your computer or network may be sending automated queries. To protect our users, we can’t process your request right now.See Google Help for more information.
进入引导程序界面,连接电脑,直接打开**flach-all.bat**,等待完成后你的手机就能开机
pixel4XL进入引导界面的步骤:
1. 首先,确保您的设备已关闭。(按住 Pixel 4 XL 的电源按钮约 30 秒钟来强制关机)
2. 按住音量下按钮和电源按钮同时长达30秒钟,直到设备重新启动。
3. 在Pixel徽标出现时松开电源按钮,但继续按住音量下按钮,直到您看到“启动器锁定状态”选项。
4. 使用音量按钮导航到“启动器锁定状态”,然后按电源按钮确认。
https://flash.android.com/release/13.0.0 界面如下
后续确认并下载固件:
下载完后, 会自动烧录到手机中, 等待烧录完成即可!
小插曲: 由于前面已经解锁过bootloader, 烧录的最后会提示重新锁定.
为PIXEL4XL编译AOSP[使用清华镜像]
AOSP的下载和编译过程可参考:Ubuntu 20.04编译AOSP 并启动模拟器
1. 编译Pixel4XL的固件, 还需要获取对应失败的驱动程序二进制文件
Nexus 和 Pixel 设备的驱动程序二进制文件
很明显, Pixel4XL 最新支持到 Android 13.0.0
下载下来的两个文件, 放到AOSP源码的目录下执行后再编译系统, 执行过程会提示一些LICENCE之类的问题, 同意即可
2. 确定Pixel4XL支持的系统版本并切换到制定分支
//https://blog.csdn.net/weixue9/article/details/100572970
# 查看所有分支
aosp/.repo/manifests$ git branch -a | cut -d / -f 3 | grep android-13
# 切换分支
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-13.0.0_r31
repo sync
如果没有切换到对应的分支, 根本找不到对应的Pixel 4XL 的项目配置
3. 编译
source build/envsetup.sh
lunch aosp_coral-userdebug
make -j12
可能编译失败: 内存问题, 增加虚拟内存解决
make
20:43:39 ************************************************************
20:43:39 You are building on a machine with 15.4GB of RAM
20:43:39
20:43:39 The minimum required amount of free memory is around 16GB,
20:43:39 and even with that, some configurations may not work.
20:43:39
20:43:39 If you run into segfaults or other errors, try reducing your
20:43:39 -j value.
20:43:39 ************************************************************
build/make/core/soong_config.mk:209: warning: BOARD_PLAT_PUBLIC_SEPOLICY_DIR has been deprecated
. Use SYSTEM_EXT_PUBLIC_SEPOLICY_DIRS instead.
build/make/core/soong_config.mk:210: warning: BOARD_PLAT_PRIVATE_SEPOLICY_DIR has been deprecate
d. Use SYSTEM_EXT_PRIVATE_SEPOLICY_DIRS instead.
======================