Pixel 4 AOSP 源码编译几点备忘

之前转载了一篇《Pixel 4 AOSP 源码编译及刷机》,当时的目的是存档备查以及按部就班操作。这一两天,仗着把 T440p 升了一下级(CPU 从 i5 4300m 升到 i7 4710mq,内存从 4GB 升级到 16GB),尤其是内存那个升级,如果不做的话,编译是无法开展的,一执行就会死机的节奏。

而且,当初想在 Windows 下(或者 WSL 下)编译的想法已经被网上他人的文章提及为不再可行,因为“自 2021 年 6 月 22 日起,AOSP 不再支持在 Windows 或 macOS 上构建”。

在构建过程中,由于某些操作与文首转载之文并不完全相符,因此还是有一些需要记录清楚一点的东西的。其中的某些弯路与本人的预先认知与事实有出入有关。

网上几乎所有的文章,在下载源码的时候,可能是为了节省磁盘空间占用,都是在下载之前使用了 repo init 命令带 -u 和 -b 参数的形式来指定下载某个分支,而我是以从清华的源先下载最新的基础快照压缩包,在本地解压后再执行 repo sync 的方式来下载所有源码的。这使我一度茫然不知在本地如何设定分支,后来才发现可以执行不带 -u 参数的 repo init 命令,仅带上合适的 -b 参数即可。

在有的文章中看到的 . build/setup.sh 命令已然过时,正确的命令是 . build/envsetup.sh。另外 make 命令也已经不能使用,第一次的全量编译要用 m 这一命令。

在实践中的印象,似乎 lunch 命令选择的平台会在某些操作之后被清空,需要再次 . build/envsetup.sh 并用 lunch 选择目标平台。这个问题直接导致我在把环境准备妥当后的第一次成功编译献给了 generic 而不是预期的 flame,而且差点就要尝试把 generic 下的 img 映像刷入到手机里。不过,前文之所以还加了“似乎”二字,是因为第一次的成功编译是非预期的状况下,根据上一次的命令执行失败后的提示执行 build/soong/soong_ui.bash --make-mode 命令而发生的。当时的错误提示中写道,可以执行 m 命令或者 build/soong/soong_ui.bash --make-mode 命令进行编译,但是直接执行 m 命令以失败告终(其原因是没有再次 source build/envsetup.sh,这是后来才意识到的,因为当时是认为在更前面的步骤里已经执行过环境设定了)。

编译主机硬件环境:ThinkPad T440p,i7 4710mq,16GB Memory,1TB SSD;

编译主机软件环境:Ubuntu 22.04.1 LTS,OpenJDK 1.8.0_352;系统为干净安装(似乎选择的还是最小安装),似乎有的文章中提到的要安装的其他依赖我都没有专门安装,环境足够充分的感觉。

收录一篇新的教程:https://blog.csdn.net/yzm65580952/article/details/120396315

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注