当前位置: 首页 > article >正文

pixel刷入Android15 userdebug版本

最近入手一个pixel7,想着刷个userdebug版本,就不用模拟器调试开发了,结果按照网上的教程,每次刷机后都是卡在goole logo界面,卡了一天多我才找到问题所在,想着记录下,给自己做个备份。

1. 前期准备:

pixel型号: pixel7;
准备刷入版本:Android 15.0.0 (BP1A.250305.019)

2. 代码下载:

代码下载可参考:ubuntu下载和编译Android源码
不过我后面根据这个重新下载代码的时候有点问题,应该是ubuntu版本更新导致的一些依赖库的问题,具体问题不记得了,不过可以根据第一部安装依赖项的时候的报错,去搜索解决方案,问chatgpt可以直接解决。
重点来了,首先下载代码时确定需要分支,这里需要查询对应关系,不同的分支支持的设备不同,我们用的pixel7,所以就用最新的分支,对应关系查询链接:
版本与分支对应关系
在表格中可见,android-15.0.0_r20支持的设备中有pixel7,所以repo init的时候采用下面的指令:

repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-15.0.0_r20	
repo sync -j32

代码同步完成之后,还需要下载对应的驱动,首先得查表,根据对应关系,查找pixel7(代号panther)的BP1A.250305.019 该buildId对应的驱动是下图第一个。这里可能链接点不开,我把我下的文件放在附件中,需要的自取,也可以参考这个,不过,亲测没用,最好的办法就是换台电脑,就是这么神奇,我的笔记本就没问题。
驱动选择
下载完成得到压缩包,解压后得到一个.sh文件,将其放入代码的根目录:
在这里插入图片描述
执行脚本,中间需要回车确认,并阅读协议之后输入 I ACCEPT。

./extract-google_devices-panther.sh 

3. 编译代码:

代码下载完成后,需要进行编译:

source build/envsetup.sh
lunch aosp_panther-bp1a-userdebug
make -j32

这里需要注意lunch的参数,网上一大堆博客都没验证就乱写了,都写lunch aosp_panther-userdebug,简直是捣乱来的,我lunch参数这么写,一刷机就卡goole logo界面,这里参数的含义是以 - 为分隔符,aosp_panther代表的是设备,panther是pixel7的代号,然后bp1a代表的是我们下载的版本代码的buildId中前缀部分,如图1中第一列的内容,然后userdebug版本是我们版本的类型,因为希望能够push编译的jar包,所以需要userdebug版本,此版本性能较差,所以用的时候可能会有卡顿。当然也可以选择其他版本型号:
user 权限受限;适用于生产环境
userdebug 与“user”类似,但具有 root 权限和调试功能;是进行调试时的首选编译类型
eng 具有额外调试工具的开发配置

4. 刷写版本:

先进入fastboot界面:
能开机的前提下:

adb reboot bootloader
fastboot flashing unlock

终端输出下面内容时,表示成功
在这里插入图片描述
如国目前不能正常开机,那就长按电源键,直到关机,再长按电源+音量下键,进入fastboot即可。
接下来就是刷入版本:

fastboot flashall -w

好了,接下来静等开机即可。

5. 验证push jar包:

为了验证userdebug版本是否成功,先随便找一个地方加上log,然后编译,这里修改ActivityRecord.java,为了方便就在onFirstWindowDrawn处加一个日志点,这样只要每个activity的第一帧绘制完成后就会有日志输出。
在这里插入图片描述
在代码根目录执行:

make services -j32
cd out/target/product/panther/system/framework/
adb root      #root设备
adb remount
adb reboot	  #刷机后第一次root需要重启
adb root
adb remount	  
adb shell umount -l system/framework   #授权向该目录push文件
adb push services.jar system/framework/
adb shell stop && adb shell start

好了,点击一个应用启动,可以看到日志打印:
在这里插入图片描述
从日志可以看出,这里启动的是相册。

http://www.lryc.cn/news/2400855.html

相关文章:

  • 【Go-补充】ioReader + ioWriter + bufio
  • leetcode 3403. 从盒子中找出字典序最大的字符串 I 中等
  • C# 一个解决方案放一个dll项目,一个dll测试项目 ,调试dll项目的源码
  • 【PmHub面试篇】PmHub 整合 TransmittableThreadLocal(TTL)缓存用户数据面试专题解析
  • unity随机生成未知符号教程
  • 基于RK3576+FPGA+AI工业控制器的工地防护检测装备解决方案
  • 推荐一款PDF压缩的工具
  • 混沌映射(Chaotic Map)
  • MySQL对数据库用户的操作
  • 《PyTorch Hub:解锁深度学习模型的百宝箱》
  • 数据结构 堆与优先级队列
  • Leetcode 3569. Maximize Count of Distinct Primes After Split
  • 用好 ImageFX,解锁游戏素材生成新姿势:从入门到进阶
  • unix/linux,sudo,其基本属性、语法、操作、api
  • 文本内容变化引起布局尺寸变化 导致的 UI 适配问题
  • 01-Redis介绍与安装
  • 十六、【前端强化篇】完善 TestCase 编辑器:支持 API 结构化定义与断言配置
  • Kafka broker 写消息的过程
  • VR博物馆推动现代数字化科技博物馆
  • Python爬虫之数据提取
  • 第2讲、Odoo深度介绍:开源ERP的领先者
  • 【TCP/IP和OSI模型以及区别——理论汇总】
  • 【HarmonyOS 5】生活与服务开发实践详解以及服务卡片案例
  • LEAP模型能源需求/供应预测、能源平衡表核算、空气污染物排放预测、碳排放建模预测、成本效益分析、电力系统优化
  • STM32 I2C通信外设
  • 13. springCloud AlibabaSeata处理分布式事务
  • MySQL 表的内连和外连
  • VR线上展厅特点分析与优势
  • Python基于SVM技术的手写数字识别问题项目实战
  • Elasticsearch的写入性能优化