如何在仿真器可写的AVD中进行系统分区

时间:2017-03-07 11:31:20

标签: android avd

这是一个相当古老的问题,但我很惊讶没有一个解决方案适合我。我需要在为Android 7.0版创建的AVD(在模拟器中)中运行一个Android应用程序作为系统应用程序。为此,我想将apk文件推送到系统分区但我不断收到错误,说它是只读文件系统。我在stackoverflow上发现了很多类似的问题,但没有什么对我有用。我在root中重新启动adb,按照类似问题的答案建议使用remount执行它,但系统分区文件系统权限不会更改。这是一个示例会话:

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

我尝试使用adb shell手动重新安装读/写(rw)选项,但重新安装失败。

有没有办法在系统分区上拥有读/写权限?

我的开发环境是Ubuntu上的Android Studio。

4 个答案:

答案 0 :(得分:3)

在我的情况下,我使用了avd(基于:Android 8.0(Oreo)标签/ ABI:google_apis / x86_64)。

$ emulator -avd Nexus_5X_API_26_APIs -writable-system 
$ adb root 
$ adb remount

然后,/system是可写的。

$ adb push somefile /system/bin/正在发挥作用。

答案 1 :(得分:1)

使用genymotion模拟器,它更快,重量更轻且预先生根。 (这意味着您可以访问系统目录)

答案 2 :(得分:1)

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

在此处添加完成步骤(对原始作者表示敬意):

> emulator -avd Pixel_3a_XL_API_29 -writable-system
> adb shell avbctl disable-verification
> adb disable-verity

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

> adb root
> adb remount
> adb shell "su 0 mount -o rw,remount /system"

注意:您将需要一个没有Google Play的模拟器,否则将无法使用。您可以按照此处介绍的步骤进行操作:https://stackoverflow.com/a/45668555/1898527

答案 3 :(得分:0)

为了他人的利益,很久以前@Ishamael在另一个stackoverflow问题Read only file system on Android

中回答了这个问题。