当前位置: 首页 > 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

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

相关文章:

pixel刷入Android15 userdebug版本

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

【Go-补充】ioReader + ioWriter + bufio

一、io.Reader 和 io.Writer 接口介绍 在 Go 语言中,io 包定义了两个最基础和最重要的接口:io.Reader 和 io.Writer。它们是 Go 语言中进行输入/输出操作的核心抽象,实现了极大的灵活性和可组合性。 io.Reader 接口 io.Reader 接口定义了一…...

leetcode 3403. 从盒子中找出字典序最大的字符串 I 中等

给你一个字符串 word 和一个整数 numFriends。 Alice 正在为她的 numFriends 位朋友组织一个游戏。游戏分为多个回合,在每一回合中: word 被分割成 numFriends 个 非空 字符串,且该分割方式与之前的任意回合所采用的都 不完全相同 。所有分…...

C# 一个解决方案放一个dll项目,一个dll测试项目 ,调试dll项目的源码

一个解决方案(sln)中放入2个项目(project,通常是一个文件夹),一个dll项目,一个dll测试项目 右键dll测试项目,设为启动项目。 在dll测试项目添加引用 1)右键测试项目 → 添加 → 引用 → 项目…...

【PmHub面试篇】PmHub 整合 TransmittableThreadLocal(TTL)缓存用户数据面试专题解析

你好,欢迎来到本次关于PmHub整合TransmittableThreadLocal (TTL)缓存用户数据的面试系列分享。在这篇文章中,我们将深入探讨这一技术领域的相关面试题预测。若想对相关内容有更透彻的理解,强烈推荐参考之前发布的博文:【PmHub后端…...

unity随机生成未知符号教程

目录 前言方法1方法2脚本后言示例代码 前言 在某些游戏中,有一些让人感到意味不明的未知符号,例如在游戏《巴别塔圣歌》中,就有这样一些能让人在初次就看不懂的未知符号。 或者在其他时候,这些未知符号如果跟粒子系统结合在一起的…...

基于RK3576+FPGA+AI工业控制器的工地防护检测装备解决方案

1.2.1 工地防护检测技术研究现状 在建筑施工的过程中,工人被要求暴露在危险的环境中作业 [2]。因此,防护装备 对于工人的安全与健康具有非常重要的意义[3]。工地工人必须佩戴适当的防护装备, 以降低意外伤害的风险。在过去的几十年里&#x…...

推荐一款PDF压缩的工具

今天一位小伙伴找来,问我有没有办法将PDF变小的办法。 详细了解了一下使用场景: 小伙伴要在某系统上传一个PDF文件,原文件是11.6MB,但是上传时系统做了限制,只能上传小于10MB的文件,如图: 我听…...

混沌映射(Chaotic Map)

一.定义 混沌映射是指一类具有混沌行为的离散时间非线性动力系统,通常由递推公式定义。其数学形式为 ,其中 f 是非线性函数,θ 为参数。它们以简单的数学规则生成复杂的、看似随机的轨迹,是非线性动力学和混沌理论的重要研究对象…...

MySQL对数据库用户的操作

注:‘%’:表示允许远程连接,‘localhost’ :限制本地登陆 – 根据用户名、权限查询用户 SELECT USER FROM mysql.user WHERE USER‘your_name’ AND HOST‘%’; – 彻底删除用户 DROP USER ‘appuser’‘%’; – 刷新使其生效 FL…...

《PyTorch Hub:解锁深度学习模型的百宝箱》

走进 PyTorch Hub 在当今的深度学习领域,模型的复用和共享已成为推动技术飞速发展的关键力量。随着深度学习在计算机视觉、自然语言处理、语音识别等众多领域取得突破性进展,研究人员和开发者们不断探索更高效、更强大的模型架构。然而,从头开始训练一个深度学习模型往往需要…...

数据结构 堆与优先级队列

文章目录 📕1. 堆(Heap)✏️1.1 堆的概念✏️1.2 堆的存储方式✏️1.3 堆的创建✏️1.4 堆的插入✏️1.5 堆的删除 📕2. 优先级队列(PriorityQueue)✏️2.1 堆与优先级队列的关系✏️2.2 优先级队列的构造方法✏️2.3 优先级队列的常用方法 3. Java对象的…...

Leetcode 3569. Maximize Count of Distinct Primes After Split

Leetcode 3569. Maximize Count of Distinct Primes After Split 1. 解题思路2. 代码实现 题目链接:3569. Maximize Count of Distinct Primes After Split 1. 解题思路 这一题的话思路倒是还好,显然,要找出所有distinct的质数的切分&…...

用好 ImageFX,解锁游戏素材生成新姿势:从入门到进阶

用好 ImageFX,解锁游戏素材生成新姿势:从入门到进阶 (备注)大陆ip无法访问到imagefx 地址:https://labs.google/fx/zh/tools/image-fx 对于独立游戏开发者和小型团队而言,美术资源往往是项目推进中的一大痛点。预算有限、专业美术人员缺乏…...

unix/linux,sudo,其基本属性、语法、操作、api

现在我们要深入到sudo的“微观结构”了——它的属性、语法、操作以及是否有传统意义上的“API”。这就像我们从宏观的宇宙现象深入到基本粒子的相互作用一样,充满了探索的乐趣! 一、 sudo 的基本属性 (Fundamental Attributes) 这些属性是sudo作为一款软件和系统工具的核心…...

文本内容变化引起布局尺寸变化 导致的 UI 适配问题

在使用 Flutter 开发应用时,配合 easy_localization 实现多语言切换是一个非常常见的做法。但正如你所说,在不同语言下文字长度差异较大(如英文和中文、阿拉伯语等)会导致界面布局错位、UI 不美观的问题。 这个问题本质上是 文本…...

01-Redis介绍与安装

01-Redis介绍与安装 SQL与NoSQL SQLNoSQL数据结构结构化非结构化数据关联关联的非关联的查询方式SQL查询非SQL事务特性ACIDBASE存储方式磁盘内存拓展性垂直水平使用场景1、数据结构固定2、相关业务对数据安全性、一致性要求较高1、数据结构不固定2、对安全性、一致性要求不高…...

十六、【前端强化篇】完善 TestCase 编辑器:支持 API 结构化定义与断言配置

【前端强化篇】完善 TestCase 编辑器:支持 API 结构化定义与断言配置 前言准备工作第一步:更新前端 `TestCase` 类型定义第二步:改造 `TestCaseEditView.vue` 表单第三步:修改后端代码中的TestCase模型和序列化器第四步:测试强化后的用例编辑器总结前言 在之前的后端文章…...

Kafka broker 写消息的过程

Producer → Kafka Broker → Replication → Consumer|Partition chosen (by key or round-robin)|Message appended to end of log (commit log)上面的流程是kafka 写操作的大体流程。 kafka 不会特意保留message 在内存中,而是直接写入了disk。 那么消费的时候&…...

VR博物馆推动现代数字化科技博物馆

VR博物馆:推动现代数字化科博馆新篇章 随着科技的飞速发展,虚拟现实(Virtual Reality, VR)技术已经逐渐渗透到我们生活的方方面面,其中,VR博物馆作为现代数字化科博馆的重要形式之一,以独特的优…...

Python爬虫之数据提取

本章节主要会去学习在爬虫中的如何去解析数据的方法,要学习的内容有: 响应数据的分类结构化数据如何提取非结构化数据如何提取正则表达式的语法以及使用jsonpath解析嵌套层次比较复杂的json数据XPath语法在Python代码中借助lxml模块使用XPath语法提取非…...

第2讲、Odoo深度介绍:开源ERP的领先者

一、Odoo深度介绍:开源ERP的领先者 Odoo,其前身为OpenERP,是一款在全球范围内广受欢迎的开源企业管理软件套件。它不仅仅是一个ERP系统,更是一个集成了客户关系管理(CRM)、电子商务、网站构建、项目管理、…...

【TCP/IP和OSI模型以及区别——理论汇总】

参考小林code和卡尔哥,感恩! 网络基础篇 面试官您好!OSI和TCP/IP是网络通信中两个关键模型,本质都是分层处理数据传输,但设计理念和应用场景差异很大。 OSI模型是理论上的七层架构,从下到上依次是物理层…...

【HarmonyOS 5】生活与服务开发实践详解以及服务卡片案例

一、金融场景创新实践 ‌智慧银行网点转型‌ 通过统一设备方案整合国产芯片与鸿蒙系统,支持智能柜员机、移动展业终端等设备的弹性硬件组合,降低25%硬件成本。利用‌元服务框架‌实现卡片式交互(如客户画像、风险评估一键调取)&a…...

LEAP模型能源需求/供应预测、能源平衡表核算、空气污染物排放预测、碳排放建模预测、成本效益分析、电力系统优化

🌐 LEAP模型(Long-range Energy Alternatives Planning System),即长期能源替代规划系统,是由斯德哥尔摩环境研究所与美国波士顿大学共同开发的基于情景分析的自底向上的能源—环境核算工具。该模型采用自底向上的架构…...

STM32 I2C通信外设

1、外设简介 可变多主机 7位/10位寻址 10位寻址:起始之后的两个字节都作为寻址,第一个字节前5位是11110作为10位寻址的标志位 SMBus:系统管理总线,主要用于电源管理,与I2C类似 2、外设结构框图 比较器、自身地址寄…...

13. springCloud AlibabaSeata处理分布式事务

目录 一、分布式事务面试题 1.多个数据库之间如何处理分布式事务? 2.若拿出如下场景,阁下将如何应对? 3.阿里巴巴的Seata-AT模式如何做到对业务的无侵入? 4.对于分布式事务问题,你知道的解决方案有哪些?请你谈谈? 二、分布式事务问题…...

MySQL 表的内连和外连

一、内连接 内连接实际上就是利用 where 子句对两种表形成的笛卡儿积进行筛选,前面学习的查询都是内连接,也是在开发过程中使用的最多的连接查询。 select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件; 注意:前面学习的都是内连…...

VR线上展厅特点分析与优势

VR线上展厅:特点、优势与实际应用 VR线上展厅,作为虚拟现实(VR)技术在展示行业的创新应用,正逐步改变着传统的展览方式。通过模拟真实的物理环境,为参观者提供身临其境的展览体验,成为展示行业…...

Python基于SVM技术的手写数字识别问题项目实战

说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在当今数字化转型加速的时代,手写数字识别作为图像处理与机器学习领域的一个经典问题,具有广…...