记录|在 AVD 模拟器上安装 Magisk
在 Android 开发过程中,免不了要将应用丢到设备上测试。如果使用实体设备,每次都要配置 ADB 连接,非常麻烦;甚至在开发某些 Xposed 模块时,需要将设备反复重启,大大降低了调试效率。如果能将这些工作都转移到 AVD (Android Virtual Devices)上来完成,一切就都变得简单起来……
由于我的电脑是 Linux,部分操作细节可能会与 Windows 有所区别
说干就干,根据 官方说明,首先需要将代码全部克隆到本地:
1 | git clone --branch v24.2 --recurse-submodules https://github.com/topjohnwu/Magisk.git |
这里的 v24.2 是版本的 tag,你也可以根据需要选择合适的 Magisk 版本。然后是 AVD 系统镜像的选择,截至撰写本文的时候,Magisk 构建脚本对于 Android R 的 patch 还不太稳定,因此建议选择 Android Q(API 29)的版本。
构建脚本默认不会输出构建过程中的 log,这让人在漫长的等待中多少有点没底,无法确定是不是寄了,所以我们修改 build.py
中的 system()
函数,让它把日志打出来:
1 | def system(cmd): |
然后是环境变量的配置,只有两条,分别是 Android Studio 使用的 jdk 路径和 Android SDK 路径:
1 | export PATH="/snap/android-studio/current/android-studio/jre/bin:$PATH" |
这两个路径都能在你的 Android Studio 设置中找到:
接着下载 Magisk 所使用的 NDK,这一步非常简单,一条命令即可完成:
1 | ./build.py ndk |
一切准备就绪后,保持你的 AVD 为开启状态,然后开始构建 Magisk:
1 | ./build.py stub |
注意将上述命令中的路径换成你的 ramdisk.img
路径。
等待所有命令执行完成后,关闭 AVD 虚拟机,然后从下拉菜单中选择 Cold Boot Now
,静静等待奇迹出现🙏
当那熟悉的 Google 徽标再一次出现在屏幕上,代表着 Magisk 已经成功地安装到这台 AVD 中,接下来便是海阔凭鱼跃,天高任鸟飞……
- 2022-09-21 补充:
对于大多数情况,用 magisk 提供的 avd 脚本即可,它会通过 root 权限模拟 Magisk 的运行,使用方式也很简单,在保持 AVD 开启且能通过 adb 访问的状态下,执行:
1 | git clone --branch <tag> https://github.com/topjohnwu/Magisk |