如何使模拟器中的AVD中的系统分区可写

mvs*_*gar 4 android android-virtual-device

这是相当一个非常古老的问题,但我很惊讶,没有任何解决方案都为我工作。我需要运行Android应用为Android版本7.0中创建在AVD(在仿真器)系统的应用程序。对于这一点,我想apk文件推到系统分区,但我不断收到错误消息,它是只读文件系统。我发现许多计算器类似的问题,但没有为我工作。我的根重新启动亚行,在回答类似的问题建议用重新装入执行,但系统分区的文件系统权限不会改变。这里有一个简单的会话:

mvsagar@mvslt:~/sw/android_sdk/platform-tools$ ./adb root
restarting adbd as root
mvsagar@mvslt:~/sw/android_sdk/platform-tools$ ./adb remount
remount succeeded
mvsagar@mvslt:~/sw/android_sdk/platform-tools$ ./adb push /home/mvsagar/projects/AndroidStudioProjects/LcnApps/app/LCNUE.apk  /system/app/LCNUE.apk
adb: error: failed to copy '/home/mvsagar/projects/AndroidStudioProjects/LcnApps/app/LCNUE.apk' to '/system/app/LCNUE.apk': couldn't create file: Read-only file system
Run Code Online (Sandbox Code Playgroud)

我曾尝试手动具有读/写(RW)使用亚行壳选择重新安装,但重新挂载失败。

有没有什么办法已经阅读系统分区/写权限?

我的dev ENV是Android的工作室在Ubuntu。

nar*_*rko 8

使用 Q 时,这是唯一对我有用的解决方案:https : //stackoverflow.com/a/64397712/1898527

在此处添加完成步骤(感谢原作者):

> emulator -avd Pixel_3a_XL_API_29 -writable-system
> adb shell avbctl disable-verification
> adb disable-verity
Run Code Online (Sandbox Code Playgroud)

现在重新启动您的模拟器以使更改生效。

> adb root
> adb remount
> adb shell "su 0 mount -o rw,remount /system"
Run Code Online (Sandbox Code Playgroud)

注意:您需要一个没有 Google Play 的模拟器,否则这将不起作用。您可以按照此处描述的步骤获取它:https : //stackoverflow.com/a/45668555/1898527


Non*_*onu 5

就我而言,我使用avd(基于:Android 8.0(Oreo)标签/ ABI:google_apis / x86_64)。

$ emulator -avd Nexus_5X_API_26_APIs -writable-system 
$ adb root 
$ adb remount
Run Code Online (Sandbox Code Playgroud)

然后,/system是可写的。

$ adb push somefile /system/bin/ 是工作。


Lea*_*ess -1

使用genymotion模拟器,速度更快,重量轻并且预root。(这意味着您可以访问系统目录)