1. 挂载/system分区为可读
通过 adb shell 以 root 用户权限执行命令 mount | grep /system
根据这条数据, 编辑命令 mount -o remount,rw -t ext4 /dev/block/vda /system
并执行
大概率提示这个错误, 不要慌, 我们从命令行启动 AVD
emulator -list-avds
查看 AVD 列表
emulator -writable-system -avd as
启动
再次挂载
2. 上传 su, supolicy, libsupol.so
下载并解压 SuperSU.apk
将这些 png 文件还原并拖到模拟器 |
---|
通过 shell 执行脚本
cp /sdcard/Download/libsupol.so /system/lib64/
cp /sdcard/Download/su /system/xbin/
cp /sdcard/Download/supolicy /system/xbin/
cp /sdcard/Download/su /system/xbin/daemonsu
/system/xbin/daemonsu --auto-daemon &
大功告成, 不过别高兴太早, 重启后 root 权限又掉了, 解决办法:
使用命令行启动
#!/bin/bash
/cygdrive/e/AndroidStudio/sdk2/emulator/emulator.exe -writable-system -avd as&
一些参数
-verbose 将仿真器初始化消息打印到终端窗口。
-accel mode 配置模拟器VM加速。例如:
加速仿真仅适用于x86和x86_64系统映像。在Linux上,它依赖于KVM。在Windows和Mac上,它依赖于Intel CPU和Intel HAXM驱动程序。如果您未模拟x86或x86_64设备,则会忽略此选项。
mode有效值为:
auto - 自动确定是否支持加速并尽可能使用(默认)。
off - 完全禁用加速,这主要用于调试。
on - 强制加速。如果未安装或无法使用KVM或HAXM,则仿真器将无法启动并输出错误消息。
-accel-check 检查是否安装了模拟器VM加速所需的虚拟机管理程序(HAXM或KVM)。
-engine engine
指定模拟器引擎:
auto - 自动选择引擎(默认)。
classic - 使用旧的QEMU 1引擎。
qemu2 - 使用较新的QEMU 2引擎。
自动检测应选择在模拟特定AVD时提供最佳性能的值。您应该-engine仅将该选项用于调试和比较目的。
-gpu mode 选择GPU仿真模式。
mode可以设置为以下选项之一:
auto:让仿真器根据您的计算机设置选择硬件或软件图形加速。
host:使用计算机上的GPU进行硬件加速。此选项通常为仿真器提供最高的图形质量和性能。但是,如果您的图形驱动程序在渲染OpenGL时出现问题,则可能需要使用swiftshader_indirect或angle_indirect选项。
swiftshader_indirect:使用SwiftShader的Quick Boot兼容变体, 使用软件加速渲染图形。host如果您的计算机无法使用硬件加速,则此选项是模式的良好替代选项。
angle_indirect:(仅限Windows)使用兼容Quick Boot兼容的ANGLE Direct3D变体, 使用软件加速渲染图形。host如果您的计算机无法使用硬件加速,则此选项是模式的良好替代选项。在大多数情况下,ANGLE性能应该类似于使用host模式,因为ANGLE使用Microsoft DirectX而不是OpenGL。在Windows上,Microsoft DirectX驱动程序通常比OpenGL驱动程序具有更少的问题。此选项使用Direct3D 11,并且需要Windows 10,Windows 8.1或Windows 7 SP1以及Windows 7平台更新。
guest:使用客户端软件呈现。此选项为仿真器提供最低的图形质量和性能。
注意:如果启用计算机不支持的图形加速选项,则可能会在模拟期间看到显示的图像不正确。
mode不推荐使用以下选项:
swiftshader:在版本27.0.2中不推荐使用swiftshader_indirect。
angle:在版本27.0.2中不推荐使用。请angle_indirect改用(仅限Windows)。
mesa:在版本25.3中不推荐使用。请swiftshader_indirect改用。
-no-accel 使用x86或x86_64系统映像时禁用模拟器VM加速。它仅对调试很有用,与指定相同-accel off。
-no-snapshot-load 执行冷启动,并在退出时保存模拟器状态。
-no-snapshot-save 如果可能,执行快速启动,但不会在退出时保存模拟器状态。
-no-snapshot 完全 禁用快速启动功能 - 它不会加载或保存仿真器状态。