作为一个安卓系统开发人员,手头有一台谷歌的pixel手机作为参照自然是十分有用的,原生安卓,体会原滋原味。下面以本人的Pixel XL手机下载、编译、刷Android 9.0代码为例介绍整个过程。

配置编译环境

因为编译安卓源码的需要,推荐大家安装一个Ubuntu操作系统,安装完以后还需要配置一下编译环境,具体步骤可以参阅本人的另一篇博客ubuntu配置工作环境 注意:由于默认下载的repo里面配置的URL是谷歌服务器,访问速度比较慢,可以通过以下命令更改为清华源

export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'

或者将repo文件用文本编辑器打开将REPO_URL后面的地址替换为上面的清华源(推荐)

下载Android源码

按照手机型号在安卓开发者网站查找对应的分支和细分版本等信息

https://source.android.com/setup/start/build-numbers

这里我们的手机为Pixel XL,需要下载安卓9.0(Pie)最新的代码,所以可以在打开以上网址后全局搜索Pixel XL,可以看到比较新的分支为android-9.0.0_r46

open gapps for Android10 源码pixel3 pixellab源码到哪里弄?_根目录


open gapps for Android10 源码pixel3 pixellab源码到哪里弄?_android_02


将init后面的-b参数替换成你需要的分支,这里为android-9.0.0_r46

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-9.0.0_r46
repo sync -j4

厂商驱动二进制文件下载

PQ3A.190801.002为上图我们选定版本的细分版本标记,用这个关键字在下面连接中搜索,可以得到对应的厂商驱动文件,点击下图红框中的两个下载链接进行下载。

https://developers.google.com/android/drivers

open gapps for Android10 源码pixel3 pixellab源码到哪里弄?_android_03


下载完的文件是两个压缩包文件,我们对齐进行解压得到两个.sh脚本文件,将其拷贝到上面下载完毕的安卓代码树的根目录下,然后分别执行

open gapps for Android10 源码pixel3 pixellab源码到哪里弄?_android_04


open gapps for Android10 源码pixel3 pixellab源码到哪里弄?_编译环境_05


每个脚本执行后都会显示一大段的license让你阅读,按回车键可以下拉查看(注意在第8条e是最后一段,快速回车会直接跳过,所以一定慢下来),查看完毕后按照提示输入大写的I ACCEPT后回车

open gapps for Android10 源码pixel3 pixellab源码到哪里弄?_根目录_06


两个脚本会分别在代码树的根目录的vendor目录下生成如下图两个文件夹,里面包含了高通qcom(芯片等私有代码的bin文件)和厂商谷歌google(设备驱动相关的私有代码bin文件)这些文件对于手机来说是至关重要的,但是由于属于厂商的机密,所以肯定不会给你源码了,只有这些bin文件,你可以拿去用。

open gapps for Android10 源码pixel3 pixellab源码到哪里弄?_根目录_07


至此,我们就可以编译代码了,在代码树的根目录执行以下指令

source build/envsetup.sh
lunch aosp_marlin-userdebug
make

编译完成后会在代码树根目录下的out目录生成img文件,用于刷机。
切换到img的路径,然后执行刷机,刷机后设备自动重启。

cd out/target/product/marlin/
adb reboot bootloader
fastboot flashall -w

注:最新的Pixel4手机动辄六七千,不推荐购买,本人推荐在某鱼等二手平台购买老款Pixel1代或者2代就可,几百块钱,也可以刷最新的Android10,十分划算。