Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to make system partition in AVD in emulator writable

Tags:

android

avd

This is fairly a very old question but I am surprised that none of the solutions are working for me. I need to run an android app as system app in an AVD (in emulator) created for Android version 7.0. For this, I want to push apk file to system partition but I keep getting error saying it is read only file system. I found many similar questions on stackoverflow but nothing is working for me. I restarted adb in root, executed it with remount as suggested in answers to similar questions, but system partition file system permissions do not change. Here is a sample session:

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

I have tried manually remounting with read/write(rw) options using adb shell, but the remounting fails.

Is there any way to have read/write permission on system partition?

My dev env is Android Studio on Ubuntu.

like image 864
mvsagar Avatar asked Mar 07 '17 11:03

mvsagar


2 Answers

In my case, I use a avd( Based on: Android 8.0 (Oreo) Tag/ABI: google_apis/x86_64 ).

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

Then, /system is writeable.

$ adb push somefile /system/bin/ is work.

like image 128
Nonu Avatar answered Oct 26 '22 23:10

Nonu


When working with Q, this is the only solution that worked for me: https://stackoverflow.com/a/64397712/1898527

Adding here the steps for completion (kudos to the original author):

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

Now reboot your emulator so that the changes take effect.

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

Note: you will need an emulator without Google Play, otherwise this won't work. You can get it by following the steps described here: https://stackoverflow.com/a/45668555/1898527

like image 32
narko Avatar answered Oct 27 '22 01:10

narko