type
status
date
summary
slug
tags
category
icon
password
最近突发奇想,想给很多年前买的 Pixel 一代(sailfish)编译一个 AOSP 的系统。因为之前虽然经常编译 LineageOS,但是仔细一想还真没有给真机器编译过 AOSP 的系统。

准备阶段

查阅Google官网的文档发现 Pixel 一代所支持的最新版本是 android-10.0.0_r17,build ID 是 QP1A.191005.007.A3。这里我选择从 USTC 镜像源拉源代码,虽然我在北京,但是清华源基本处于一个不可用的状态,不知道是因为北邮校园网的问题还是啥。一如我当年在安徽大学(中科大对门)用过清华源的 pypi 镜像。
下载好之后,要添加一下驱动,在这 https://developers.google.com/android/drivers按build ID搜索一下,下载对应机型的,解压出来./extract-qcom-sailfish.sh./extract-google_devices-sailfish.sh 在源代码目录下执行一下即可。
至此,就准备好了。

编译

😭 Ubuntu 22.04

我用的是 Ubuntu 22.04,我看符合官网上 Ubuntu 18.04 or later 的要求我就直接开编译了,直接就是三板斧。
然后就给报了错,
或者
虽然但是,这俩报错随便 update api 一下就可以编译过了。但是但是但是,它刷进去就一直重启,adbd 都没起来,也看不到日志,试了很多次,甚至重新拉了源码,还是一样的效果。都快怀疑人生了,我就搜啊搜啊搜啊搜,终于这个世界上不止我一个倒霉蛋:
编译 aosp 并且刷入 pixel 后无限重启,各位有什么排查问题妙招 https://www.v2ex.com/t/893452
notion image

❓Docker + Ubuntu 18.04

不理解,但是实在是没活了。抱着试试看的心态,准备起个 docker 编译一手。
首先是 Dockerfile 如下:
构建镜像,创建容器并启动
-u 1000:1000 设置uid和gid,是为了确保容器内用户与主机用户权限一致,因为我主机拉源码用的用户就是 s1nk(1000)。
然后继续,三板斧
没有报错!退出docker回到主机设置一下 ANDROID_PRODUCT_OUT 环境变量,刷入即可。
成功开机,有点说法的。不过我还是不理解… 有懂的哥们可以浇浇我🥺