使用Google Pixel5手机调试AOSP(代码下载、编译、刷机、调试)详细攻略

这篇具有很好参考价值的文章主要介绍了使用Google Pixel5手机调试AOSP(代码下载、编译、刷机、调试)详细攻略。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


为了方便调试AOSP源码 ,花1000多大洋在pdd上买了一个99新的pixel5手机,从此终于可以在真机上调试代码了。

代码下载

AOSP代码的下载在本专栏中已经有文章介绍过了,这里就不再赘述,没看过的可以去翻看之前介绍的文章。
这里想要说明的是如下下载对应手机型号的代码,比如pixel5对应的代码如何下载。
打开如下链接AOSP源代码标记和 build可以看到如下内容:
使用Google Pixel5手机调试AOSP(代码下载、编译、刷机、调试)详细攻略,Android系统开发,智能手机,android

支持的设备一栏表明该分支的代码支持的手机型号,标记一栏指的是我们下载代码时指定的TAG,build ID一栏是用来下载Google的闭源资源的id。因为我们想要编译一个完整镜像的话,除了开源的aosp之外,还有一部分比如驱动、vendor.img等是不开源的,就需要通过这个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,所以我们搜索buildID 为TQ2A.230405.003.B2的pixel5即可。
使用Google Pixel5手机调试AOSP(代码下载、编译、刷机、调试)详细攻略,Android系统开发,智能手机,android

如上图可以看到,我们需要下载两个文件,一个是Google的,一个是高通的关于硬件相关的镜像。因为pixel5用的是高通芯片,所以需要高通的部分镜像。点击两个蓝色Link进行文件下载。下载完毕后进行解压发现是两个shell脚本。我们将其放到aosp根目录下,如下:

使用Google Pixel5手机调试AOSP(代码下载、编译、刷机、调试)详细攻略,Android系统开发,智能手机,android
图中标记出来的就是解压后的shell脚本,分别执行,开始会有一些协议条款的打印,我们翻到最后,需要输入I ACCEPT,然后就开始解压了。解压完成后就可以进行代码编译了。

代码编译

这部分主要介绍编译时的lunch选项怎么选,其实也很简单,打开如下页面选择设备 build
使用Google Pixel5手机调试AOSP(代码下载、编译、刷机、调试)详细攻略,Android系统开发,智能手机,android
这里列出了每个机型的编译配置,比如我们编译pixel5的代码,用如下命令:

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

刷机

刷机需要用到fastboot和adb工具,我有一个偷懒的方法就是如果安装了Android Studio的话,直接将Sdk里的工具复制到系统的bin目录下即可。
使用Google Pixel5手机调试AOSP(代码下载、编译、刷机、调试)详细攻略,Android系统开发,智能手机,android
刷机前需要先打开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版本,所以后面我们调试时是可以进行push的。需要先执行

adb root
adb remount
adb reboot

我们在Launcher启动时加一行日志来进行验证一下:
使用Google Pixel5手机调试AOSP(代码下载、编译、刷机、调试)详细攻略,Android系统开发,智能手机,android

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

使用Google Pixel5手机调试AOSP(代码下载、编译、刷机、调试)详细攻略,Android系统开发,智能手机,android
将编译好的Launcher3 push到设备并重启

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编译出来的应用都比较简陋,原生系统带的比较美观。不过既然是调试代码使用,这个就无所谓了,自己有空了定制一下也是可以的。文章来源地址https://www.toymoban.com/news/detail-607685.html

到了这里,关于使用Google Pixel5手机调试AOSP(代码下载、编译、刷机、调试)详细攻略的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 0.【AOSP+Pixel 5】Android13 开发环境搭建及源码下载、编译和刷机

    本人——入行Android没多久的萌新一枚。这个系列文章主要是我客制化Android系统的一些记录。以下是我的开发环境的信息: Android 版本:13 Android 设备:Pixel 5(欧版) 操作系统:Ubuntu 20.04.5 LTS(64位) 先更新一下软件源和软件 Ubuntu 20.04 LTS已经移除Python2,默认安装python3,但是

    2024年02月14日
    浏览(56)
  • APP安卓开发之Android Studio从安装到创建项目(一键解决gradle下载缓慢以及写代码没提示问题,包含如何创建手机模拟器)教程

    选择NEXT 选择NEXT 选择要安装的地址,然后选择NEXT 选择Install 先启动刚安装好的Android Studio 选择Do not import settings,然后选择OK 选择Cancel 先选择D\\\'ont send,然后选择NEXT 这里选择Custom,然后NEXT 选择Android Studio自带JDK的安装位置,然后NEXT 选择一个自己喜欢的主题颜色,然后NEXT 选

    2024年04月29日
    浏览(72)
  • Dhrystone基准测试程序在Google Pixel4上运行跑分教程

    记录一下实验过程,方便后续回顾 Dhrystone是测量处理器运算能力的最常见基准程序之一,常用于处理器的整型运算性能的测量。程序是用C语言编写的,因此C编译器的编译效率对测试结果也有很大影响。 但其也有许多不足,Dhrystone不仅不适合于作为嵌入式系统的测试向量,甚

    2024年02月12日
    浏览(34)
  • 如何使用curl下载github代码

    首先通过chrome打开想要下载的源文件 如图,有那个下载图标时表示不需要鉴权即可下载,一般仓库都会开放只读权限,所以很大概率都有 比如我想下载这个crc32.c文件 那么我就需要知道它在哪个IP中,按下F12打开网络,点击下载图标 上图为文件所在位置 使用如下命令进行下

    2024年02月16日
    浏览(37)
  • Stable-Diffusion-WebUI从代码下载到使用技巧

    本文用于对AI绘画感兴趣但无计算机编程基础的人,包含本人安装和使用过程中的心得,可供新学者参考。 心理准备: 电脑性能越高越好,最好有高端显卡,如30系以上。低端显卡也可以,速度和质量感人就是; 会要求下载一些软件、模型,涉及环境变量设置、虚拟环境安装

    2024年02月10日
    浏览(68)
  • 使用EasyExcel导入、根据模板下载(附前后端代码)

    使用以上导包如果报错 NoClassDefFoundError,可能需要引入cglib包 前端代码: : 由于前端type=\\\"file\\\"的样式固定,可以隐藏input,通过其他按钮点击触发上传,用户上传文件后input的值发生变化触发change事件调用ajax  后端代码: controller层接收  实现类: 这里用的是在本地下载文件

    2024年02月15日
    浏览(59)
  • 如何使用Java Mail发邮件(包括单发和群发),含演示代码下载

    在我们做业务系统开发时时,经常会用到 邮件发送的场景,如 通过邮件通知给注册用户有关注册码的内容,或者 管理的某些设备有告警了,需要邮件通知相关维护人员及时处理相关设备,还有 使用的会员服务已经到期了,用邮件通知给用户等等。 在java 世界里如何发邮件,

    2024年02月16日
    浏览(45)
  • 使用代码下载开源的大模型文件示例以及中文微调llama资源汇总:

    一、下载示例  二、资源汇总 Chinese Llama 2 7B 链接:LinkSoul/Chinese-Llama-2-7b · Hugging Face OpenBuddy-LLaMA2-13B 链接:OpenBuddy/openbuddy-llama2-13b-v8.1-fp16 · Hugging Face firefly-llama2-13b 链接:GitHub - yangjianxin1/Firefly: Firefly(流萤): 中文对话式大语言模型(全量微调+QLoRA),支持微调Llma2、Llama、Qwen、

    2024年02月13日
    浏览(43)
  • git实战—Gerrit配置SSH key & 下载代码到本地 & 使用VScode编辑器编辑提交代码——2023.07

    centos7 部署Gerrit Windows10 部署gitbash 2.41 版本 首先在虚拟机上搭建Gerrit服务,在Windows上部署好gitbash;其次,配置 publishkey 连接Gerrit仓库;最后使用git clone下载代码到本地,再使用VScode编辑提交代码带仓库。 当然,直接使用VScode连接Gerrit也是可以的,但由于VScode终端中的命令不

    2024年02月09日
    浏览(96)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包