关于打造安卓测试机的方法以及常见问题的解决方式

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
简介: 本文主要介绍如何打造安卓测试机

摘要:

本文主要讲解如何打造安卓测试机,并刷机google原生系统、部署Magisk对测试机进行root的常用方式;并对一些常见问题进行思路解答。本文适合新手学习,大佬请绕过


本次实验使用的设备及环境如下:

Nexus 5x 测试机一部(闲鱼100-150即可购买一部)

镜像下载的网站:https://developers.google.cn/android/images?hl=zh-cn#angler

TWRP Recoery刷机镜像站:https://twrp.me/

Magisk 下载:https://github.com/topjohnwu/Magisk/releases

Lsposed 下载:https://github.com/LSPosed/LSPosed/releases

platform-tools 工具下载:https://dl.google.com/android/repository/platform-tools_r34.0.4-windows.zip


首先说一下,为什么使用Nexus的设备,一个是成本低,一个是更适合做测试机,解BL锁不需要太麻烦,同时支持的各种原生镜像的种类也比较多,刷机的方法也比较成熟


现在适合做测试机的设备其实很多,除了最优选的Nexus、Pixel外,现在的一加、小米等骁龙处理器的设备都可以做测试机,只不过渠道限制的比较多


而由于安卓7.0以上和以下,信任证书的问题,所以会有一些其他的操作,包括Xposed框架和Lsposed框架的选择、信任证书的安装方式、甚至是安装不同版本的Magisk


这里面提到了Magisk 和 Lsposed;Lsposed框架是现在比较新的框架了,但是他似乎只支持安卓7.0以上的版本;而Magisk 并没有这个限制,但是低于26.0的Magisk 版本会有很多好的插件用不了,比如说Shamiko 插件,更适合躲避root检测,但是低于26.0的Magisk 是用不了的,同时26.0的Magisk 并不适合Recoery 强刷,虽然刷完了不对镜像进行修复也可以使用部分root功能,但是确实是存在一定的缺陷,所以大家在测试的时候都需要进行避坑


Bootloader 模式:

首先第一步是如何进入Bootloader模式:

此处以Nexus5x为例,大致有两种方式

方式一:

手机能开机,打开开发者模式,信任计算机后,利用ADB功能进入bootloader;adb工具大家请根据platform-tools 工具下载即可,此处不演示添加环境变量的步骤,大家可以选择添加,也可以选择不添加

adb devices

图片.png

出现这种情况不要慌,只需要信任计算机即可

图片.png

图片.png

执行该命令是看看有没有adb可连接的设备,如果后面显示的事device那么就可以了,如果是offline,那么请执行adb kill-server或重启计算机、手机;或使用方法二进入bootloader



adb reboot bootloader



图片.png

图片.png

想要刷机,首先第一步是需要确认手机的BL锁是解锁的状态,由于不同的手机厂商对手机解锁的方式不一样,所以这里仅仅是展示Nexus 5x解锁的样子,如果不是这个样子,那么请执行

fastboot oem unlock


方式二:

按住手机电源键 + 音量下键,直至出现bootloader页面松手即可进入bootloader模式



接下来是第一个坑,进入到bootloader模式后,fastboot devices识别不到设备,这个时候需要大家手动更新计算机的驱动


https://developer.android.com/studio/run/win-usb?hl=zh-cn

电脑按win+x选择设备管理器,右键选则更新程序软件,在弹出的对话框中选择浏览计算机以查找驱动程序的软件,选择浏览,然后选中下载的驱动的文件夹(不用选的很具体,电脑会自动搜索安装,建议选arm、x86的上一个文件夹)

图片.png


刷机镜像选择

这里推荐大家下载安卓8.1的OPM1.171019.011镜像包

图片.png

图片.png

大家可以看到,笔者将第二个压缩文件里的东西也给解压出来了,一会这是第二个坑

常规来讲,这个时候,大家执行

fastboot devices

图片.png

这个时候,只需要在解压目录下,执行flash-all.bat ,而后等待刷机结束就可以了

图片.png

这里的第二个坑,就是有的环境会报错,bat脚本会无法执行里面的fastboot -w update image-bullhead-opm1.171019.011.zip 命令,以至于系统找不到boot.img、system.img等包,所以需要我们手工的更改一下脚本

图片.png

如果大家遇到了特殊情况,只需要把注释的内容覆盖就可以了,记得将image-bullhead-opm1.171019.011.zip文件解压到当前目录

fastboot flash android-info android-info.txt

fastboot flash boot boot.img

fastboot flash system system.img

fastboot flash recovery recovery.img

fastboot flash vendor vendor.img


Magisk的部署

此时手机是可以正常开机的,大家记得打开开发者模式,而后重新信任计算机后即可使用adb进行操作,大家需要自行下载magisk的apk安装包进行手工安装

adb install magisk.apk

安装成功后,会提示success,这个时候手机里会有magisk的图标,大家打开magisk软件,因为笔者没有留图,所以大家凑合看一下

图片.png

上图是root成功的图,正常的话zygisk是否的,大家需要点击安装按钮,取消所有的选项,然后选择并修补一个文件   图片.png


修补的文件,其实就是镜像包里的boot.img文件,大家需要将这个文件push到安卓手机能访问到的目录,然后选中,点击修复,待magisk修复成功后会在日志内提示文件的位置,大家记住文件在什么地方,导出修复好的img包

adb pull /sdcard/Download/magisk_patched-24000_GXe4N.img

图片.png

adb reboot bootloader

fastboot flash boot magisk_patched-24000_GXe4N.img

fastboot reboot

图片.png

这个时候工作并没有完成,当手机重启后,大家发现,超级用户功能可以使用,并且出现了卸载magisk功能的时候,这个时候说明magisk的root成功了

此时点击首页右上角设置按钮

图片.png

下滑至Magisk模块,划开Zygisk功能并重启手机,才算是真正的结束配置

图片.png这个时候第三个坑来了,很多手机都在这个时候起不来了,手机变砖头了,卡在google开机页面怎么也进不去系统,这个时候怎么办?


按住手机电源键+音量下键,直至重新进入到bootloader页面,这个时候大家不需要重新点击flash-all.bat 进行系统重装,仅仅需要执行以下命令即可修复

fastboot flash boot boot.img

需要注意的是,boot.img就是你放进手机里修复镜像用的东西!这个时候不出意外都可以开机了,但是尴尬的就是root失效了


TWRP进行Recovery强刷root

TWRP大家最上面的地址,而后选择nexus 5x机型,下载最新的twrp-3.7.0_9-0-bullhead.img 即可

这个时候不要重启手机,让手机保持在bootloader页面,输入以下命令

fastboot flash recovery twrp-3.7.0_9-0-bullhead.img

等所有的都显示ok之后,按手机音量下键,选择Recover mode,然后按电源键即可进入recovery修复模式

图片.png

等待手机重新启动后,即可进入twrp功能,这个时候计算机会自动连接手机文件夹,大家可以将magisk apk安装包复制到手机能访问到的文件夹,然后利用twrp的 install功能安装app,他会自动刷root,这样成功后重启的手机即可正常开机,不会卡在开机页面进不去了


系统根目录证书的导入


上面提到,安卓7.0以上的系统默认只进行手机根目录的证书,所以大家需要将burp的证书导到系统根目录,但是这个时候的根目录是只读模式,需要我们重新挂载system目录才行

附上burp证书修改的方式

openssl x509 -inform DER -in burp.der -out burp.pem

openssl x509 -inform PEM -subject_hash_old -in burp.pem

openssl x509 -inform DER -in burp.der -out 9a5ba575.0

图片.png


常规操作是直接将证书导入到手机里

adb push 9a5ba575.0 /system/etc/security/cacerts/9a5ba575.0

但是竟然说有坑,这里是第四个坑

图片.png

网上几乎所有的解决方式都是:

adb root

adb remount

adb disable-verity

adb root

adb remount

adb push 9a5ba575.0 /system/etc/security/cacerts/9a5ba575.0

很不好意思,adb root其实在这个系统里是成不了的,这里就是第5个坑

图片.png


而几乎网上所有的解决方式都是,下载超级adbd工具,给上root权限,下载最新版的adb工具,但是很不幸的是,实际上在安卓7以上这个方法就不灵了,这就是第6个坑


不要慌,这个时候依然可以解决,而这里依然有两个解决方案,不推荐直接adb shell ; su ; chmod 777的方式解决问题,这么玩会把手机再次变砖头,也不要chown 更改所属

执行

adb push 9a5ba575.0 /sdcard/

adb shell "su -c 'mount -o remount,rw /system'"

图片.png

或者

adb push 9a5ba575.0 /sdcard/

adb shell

su

mount -o rw,remount -t auto /system

cp /sdcard/9a5ba575.0  /system/etc/security/cacerts

这个时候就解决了证书的问题,大家也可以选择安装MT管理器APK,然后给这个工具root权限,就可以直接在工具里把证书导入到system目录

图片.png

图片.png



相关实践学习
阿里云百炼xAnalyticDB PostgreSQL构建AIGC应用
通过该实验体验在阿里云百炼中构建企业专属知识库构建及应用全流程。同时体验使用ADB-PG向量检索引擎提供专属安全存储,保障企业数据隐私安全。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
21天前
|
数据采集 监控 机器人
浅谈网页端IM技术及相关测试方法实践(包括WebSocket性能测试)
最开始转转的客服系统体系如IM、工单以及机器人等都是使用第三方的产品。但第三方产品对于转转的业务,以及客服的效率等都产生了诸多限制,所以我们决定自研替换第三方系统。下面主要分享一下网页端IM技术及相关测试方法,我们先从了解IM系统和WebSocket开始。
37 4
|
2月前
|
测试技术 API 项目管理
API测试方法
【10月更文挑战第18天】API测试方法
60 1
|
2月前
|
安全 测试技术
北大李戈团队提出大模型单测生成新方法,显著提升代码测试覆盖率
【10月更文挑战第1天】北京大学李戈教授团队提出了一种名为“统一生成测试”的创新方法,有效提升了大模型如GPT-2和GPT-3在单一测试中的代码生成覆盖率,分别从56%提升至72%和从61%提升至78%。这种方法结合了模糊测试、变异测试和生成对抗网络等多种技术,克服了传统测试方法的局限性,在大模型测试领域实现了重要突破,有助于提高系统的可靠性和安全性。然而,该方法的实现复杂度较高且实际应用效果仍需进一步验证。论文可从此链接下载:【https://drive.weixin.qq.com/s?k=ACAAewd0AA48Z2kXrJ】
77 1
|
2月前
|
测试技术 UED
软件测试中的“灰盒”方法:一种平衡透明度与效率的策略
在软件开发的复杂世界中,确保产品质量和用户体验至关重要。本文将探讨一种被称为“灰盒测试”的方法,它结合了白盒和黑盒测试的优点,旨在提高测试效率同时保持一定程度的透明度。我们将通过具体案例分析,展示灰盒测试如何在实际工作中发挥作用,并讨论其对现代软件开发流程的影响。
|
3月前
|
人工智能 测试技术 开发者
北大李戈团队提出大模型单测生成新方法,显著提升代码测试覆盖率
【9月更文挑战第27天】北京大学李戈团队在人工智能领域取得重要突破,提出HITS新方法,通过将待测方法分解为多个切片并利用大型语言模型逐个生成测试用例,显著提升代码测试覆盖率,尤其在处理复杂方法时效果显著,为软件开发和测试领域带来新希望。尽管存在一定局限性,HITS仍展示了巨大潜力,未来有望克服限制,推动软件测试领域的创新发展。论文详情见【https://www.arxiv.org/pdf/2408.11324】。
137 6
|
2月前
|
缓存 Java Shell
Android 系统缓存扫描与清理方法分析
Android 系统缓存从原理探索到实现。
81 15
Android 系统缓存扫描与清理方法分析
|
29天前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法。本文介绍 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,同时提供 Python 实现示例,强调其在确保项目性能和用户体验方面的关键作用。
34 6
|
1月前
|
JavaScript 安全 编译器
TypeScript 与 Jest 测试框架的结合使用,从 TypeScript 的测试需求出发,介绍了 Jest 的特点及其与 TypeScript 结合的优势,详细讲解了基本测试步骤、常见测试场景及异步操作测试方法
本文深入探讨了 TypeScript 与 Jest 测试框架的结合使用,从 TypeScript 的测试需求出发,介绍了 Jest 的特点及其与 TypeScript 结合的优势,详细讲解了基本测试步骤、常见测试场景及异步操作测试方法,并通过实际案例展示了其在项目中的应用效果,旨在提升代码质量和开发效率。
42 6
|
1月前
|
Java 测试技术 Maven
Java一分钟之-PowerMock:静态方法与私有方法测试
通过本文的详细介绍,您可以使用PowerMock轻松地测试Java代码中的静态方法和私有方法。PowerMock通过扩展Mockito,提供了强大的功能,帮助开发者在复杂的测试场景中保持高效和准确的单元测试。希望本文对您的Java单元测试有所帮助。
208 2
|
2月前
|
测试技术 Python
自动化测试项目学习笔记(三):Unittest加载测试用例的四种方法
本文介绍了使用Python的unittest框架来加载测试用例的四种方法,包括通过测试用例类、模块、路径和逐条加载测试用例。
97 0
自动化测试项目学习笔记(三):Unittest加载测试用例的四种方法