e源码编译使用-使用Google Pixel5手机调试AOSP(代码下载、编译、刷机、调试)详解

为了方便调试AOSP源码,我在pdd上花了1000多元买了一台99新的pixel 5手机,终于可以在真机上调试代码了。

代码下载

AOSP代码的下载本专栏已经介绍过e源码编译使用,这里不再重复。 如果你还没有看过,可以看看之前介绍过的文章。

这里要说明的是下载手机型号对应的代码如下,比如如何下载pixel5对应的代码。

打开以下链接AOSP源代码标记和构建可以看到以下内容:(#source-code-tags-and-builds)

supported devices一栏表示该分支的代码支持的手机型号,tag一栏是指我们下载代码时指定的TAG,build ID一栏是用于下载Google闭源资源的id。 因为如果我们要编译一个完整的镜像,除了开源的aosp之外,还有一些部分如drivers、vendor.img等不开源e源码编译使用,所以我们需要通过这个build ID下载对应的资源并放入将它们在aosp源代码目录中解压并编译,最终会生成一个完整的镜像。

由于我们是pixel5设备,所以可以看到支持android-13.0.0_r40,我们首先通过以下命令下载对应的aosp

mkdir android-13.0.0_r40
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-13.0.0_r40
repo sync

然后进入以下页面下载Nexus和Pixel设备的驱动程序二进制文件()

android-13.0.0_r40对应的驱动文件的build ID为TQ2A.230405.003.B2,因此我们可以搜索build ID为TQ2A.230405.003.B2的pixel5。

从上图可以看到,我们需要下载两个文件,一个是来自Google的,另一个是来自MediaTek的硬件相关镜像。 由于pixel5采用联发科芯片,因此需要Snapdragon的部分图片。 单击两个红色链接即可下载该文件。 下载完成后解压,发现有两个shell脚本。 我们放到aosp根目录下,如下:

e源码编译使用-使用Google Pixel5手机调试AOSP(代码下载、编译、刷机、调试)详解

图中标注的是解压后的shell脚本,单独执行。 一开始会复制一些合同条款。 当我们转到最后时,我们需要输入I ACCEPT,然后开始解压。 解压完成后即可编译代码。代码编译

这部分主要介绍编译时如何选择lunch选项。 其实很简单。 打开以下页面并选择设备版本 (#selecting-device-build)

下面是各个模型的编译配置。 例如我们编译pixel5的代码,命令如下:

source build/envsetup.sh
lunch aosp_redfin-userdebug
m -j8

闪光

需要使用fastboot和adb工具来刷机。 我有一个偷懒的方法,如果安装了Android Studio,直接将Sdk中的工具复制到系统的bin目录下。

e源码编译使用-使用Google Pixel5手机调试AOSP(代码下载、编译、刷机、调试)详解

刷机前需要先打开usb调试,然后执行以下命令开始救砖。

注意一定要在aosp根目录下,如果没有执行lunch则必须先执行

source build/envsetup.sh
lunch aosp_redfin-userdebug

然后开始省砖

adb reboot bootloader
fastboot flashing unlock
这个时候手机上会有选项,根据说明按下音量键切换到允许unlock,再按电源键确认即可。

最后一次执行

fastboot flashall -w
-w会清除data分区,如果不想的话也可以不加-w选项

然后等待存砖完成,手动重启手机。 以下是我刷机成功的输出:

zzh@ubuntu:~/work/android/aosp/android-13.0.0_r40$ fastboot flashall
--------------------------------------------
Checking 'product'                                 OKAY [  0.069s]
Setting current slot to 'b'                        OKAY [  0.087s]
Sending 'boot_b' (98304 KB)                        OKAY [  2.720s]
Writing 'boot_b'                                   OKAY [  0.308s]
Sending 'dtbo_b' (16384 KB)                        OKAY [  0.540s]
Writing 'dtbo_b'                                   OKAY [  0.112s]
Sending 'vbmeta_b' (8 KB)                          OKAY [  0.140s]
Writing 'vbmeta_b'                                 OKAY [  0.079s]
Sending 'vbmeta_system_b' (4 KB)                   OKAY [  0.140s]
Writing 'vbmeta_system_b'                          OKAY [  0.079s]
Sending 'vendor_boot_b' (98304 KB)                 OKAY [  2.680s]
Writing 'vendor_boot_b'                            OKAY [  0.308s]
Rebooting into fastboot                            OKAY [  0.070s]
< waiting for any device >
Sending 'super' (4 KB)                             OKAY [  0.001s]
Updating super partition                           OKAY [  0.031s]
Resizing 'product_b'                               OKAY [  0.006s]
Resizing 'system_b'                                OKAY [  0.006s]
Resizing 'system_ext_b'                            OKAY [  0.006s]
Resizing 'system_a'                                OKAY [  0.006s]
Resizing 'vendor_b'                                OKAY [  0.006s]
Resizing 'vendor_a'                                OKAY [  0.006s]
Invalid sparse file format at header magic
Resizing 'product_b'                               OKAY [  0.006s]
Sending sparse 'product_b' 1/2 (262140 KB)         OKAY [  6.954s]
Writing 'product_b'                                OKAY [  0.710s]
Sending sparse 'product_b' 2/2 (20168 KB)          OKAY [  0.547s]
Writing 'product_b'                                OKAY [  0.090s]
Invalid sparse file format at header magic
Resizing 'system_b'                                OKAY [  0.006s]
Sending sparse 'system_b' 1/4 (262112 KB)          OKAY [  6.951s]
Writing 'system_b'                                 OKAY [  0.697s]
Sending sparse 'system_b' 2/4 (262116 KB)          OKAY [  6.912s]
Writing 'system_b'                                 OKAY [  0.701s]
Sending sparse 'system_b' 3/4 (262140 KB)          OKAY [  6.935s]
Writing 'system_b'                                 OKAY [  0.679s]
Sending sparse 'system_b' 4/4 (64236 KB)           OKAY [  1.697s]
Writing 'system_b'                                 OKAY [  0.206s]
Resizing 'system_ext_b'                            OKAY [  0.006s]
Sending 'system_ext_b' (191812 KB)                 OKAY [  4.977s]
Writing 'system_ext_b'                             OKAY [  0.526s]
Resizing 'system_a'                                OKAY [  0.005s]
Sending 'system_a' (26672 KB)                      OKAY [  0.699s]
Writing 'system_a'                                 OKAY [  0.091s]
Invalid sparse file format at header magic
Resizing 'vendor_b'                                OKAY [  0.010s]
Sending sparse 'vendor_b' 1/3 (262092 KB)          OKAY [  6.941s]
Writing 'vendor_b'                                 OKAY [  0.731s]
Sending sparse 'vendor_b' 2/3 (262116 KB)          OKAY [  6.881s]
Writing 'vendor_b'                                 OKAY [  0.692s]
Sending sparse 'vendor_b' 3/3 (239980 KB)          OKAY [  6.379s]
Writing 'vendor_b'                                 OKAY [  0.627s]
Rebooting                                          OKAY [  0.000s]
Finished. Total time: 88.360s

调试

由于我们编译的是userdebug版本,所以debug的时候可以push。需要先执行

adb root
adb remount
adb reboot

让我们添加一行日志来验证启动器何时启动:

e源码编译使用-使用Google Pixel5手机调试AOSP(代码下载、编译、刷机、调试)详解

source build/envsetup.sh
lunch aosp_redfin-userdebug
make Launcher3 

将编译好的Launcher3推送到设备并重启

adb root
adb remount
// 在测试时发现已经被安装的apk重启后不会再扫描,需要删除data下的文件才可以,所以我直接install apk验证了。
// 当然其他文件,比如so库,jar包,xml文件等还是可以push验证的。
// adb push out/target/product/redfin/system_ext/priv-app/Launcher3/ /system_ext/priv-app/
adb install -r  out/target/product/redfin/system_ext/priv-app/Launcher3/Launcher3.apk
// 此时Launcher会重启,可以看到我们添加的日志打印出来了。
07-26 22:08:53.441  5855  5855 D zzh     : Launcher3 Start...

不足的

我买回来的设备,或者从网上下载的对应设备的镜像,有gms服务和应用程序,但是如果我自己编译aosp的话,就没有。 如果我需要它们,我需要安装外部 gms 服务和应用程序。

另外就是系统应用也和原生系统不同。 aosp编译出来的应用程序比较小,而原生系统则比较美观。 不过既然是用来调试代码的,那就无所谓了,有时间就点一下吧。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 源码编译 e源码编译使用-使用Google Pixel5手机调试AOSP(代码下载、编译、刷机、调试)详解 https://www.wkzy.net/game/178984.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务