Anyone know how to edit /etc/hosts file inside an android studio emulator running in nougat? I will be editing it so I can use my virtual host in my local web server. I tried editing it through terminal using adb however, it is returning Read-only file system. Tried also using chmod but still it fails.
I also tried pulling and pushing files using adb
$ ./adb -s emulator-5554 push ~/Desktop/hosts /system/etc/hosts
adb: error: failed to copy ‘/Users/Christian/Desktop/hosts’ to ‘/system/etc/hosts’: couldn’t create file: Read-only file system
1) android-sdk-macosx/tools/emulator -avd <avdname> -writable-system 2) ./adb root 3) ./adb remount 4) ./adb push <local>/hosts /etc/hosts
Android file host can be
/etc/hosts <--- This worked for me /etc/system/hosts /system/etc/hosts
1) ./adb shell 2) cat /etc/hosts 3) ping customsite.com
Here is how i was able to do it working on OSX. After reading a bunch of different instruction nothing seemd to work for me untill someone mentioned that you have a very narrow window for copying the file from your disk to the emulated device or it becomes read-only again
- Start your emulator.
- In your terminal find the folder “platform-tools” for your devices
- Prepare the hosts file you want to copy to your device (in my case i put it on desktop)
- String together a bunch of commands to copy the file quickly. This is what worked for me
./adb root && ./adb -s emulator-5554 remount && ./adb -s emulator-5554 push ~/Desktop/hosts /system/etc/hosts’emulator-5554′ is the name of my device which you can find by typing
after that the terminal responded with
restarting adbd as root
you can veryfy the copy was successfull by
./adb shell and then
I was then able to connect to my virtual hosts from the emulated device
Just to be complete here is how my hosts file looked like
I hope this helps someone as i spet quite some time trying to figure this out.
Step by Step
- Don’t Create the AVD with a Google Play image.
- Use for example Google APIs Intel x86 Atom System Image.
Start the emulator with the following command…
emulator.exe –avd <avd name> -writable-system
C:\Users\ilyas.mamun\AppData\Local\Android\Sdk\emulator>emulator.exe -avd Pixel_API_25 -writable-system emulator: WARNING: System image is writable HAX is working and emulator runs in fast virt mode. audio: Failed to create voice `goldfish_audio_in' qemu-system-i386.exe: warning: opening audio input failed audio: Failed to create voice `adc'
Root and Remount the AVD like the followings…
C:\Users\ilyas.mamun\AppData\Local\Android\Sdk\platform-tools>adb root C:\Users\ilyas.mamun\AppData\Local\Android\Sdk\platform-tools>adb remount remount succeeded C:\Users\ilyas.mamun\AppData\Local\Android\Sdk\platform-tools>adb shell eneric_x86:/ # cd system generic_x86:/system # cd etc generic_x86:/system/etc # cat hosts 127.0.0.1 localhost ::1 ip6-localhost generic_x86:/system/etc # echo "192.168.1.120 ilyasmamun.blogspot.com" >> hosts generic_x86:/system/etc # cat hosts 127.0.0.1 localhost ::1 ip6-localhost 192.168.1.120 ilyasmamun.blogspot.com generic_x86:/system/etc #
I was able to edit the /etc/hosts file by launching the emulator with -writable-system and remounting the emulator using adb remount. After that the hosts file inside the emulator is editable. I tried pushing/replacing the file and succeeded.
Follow the below 3 steps :
- Start emulator in writable mode :
./emulator -avd <emulator_name> -writable-system
- remount :
- push the hosts file attached :
adb push hosts /system/etc/
- Run one and only one emulator_name with above steps
emulatoris located within android-sdk. For me it was under
- Attached hosts file will resolve
www.facebook.comto 127.0.0.1, hence blocks
You can use the ADB Shell to edit the file by changing the access (Read Only to RW)
Try @P.O.W answer,
Make sure you have a blank line after the last entry of the hosts file
If you use tabs in the hosts file, replace them with spaces
Restart Android and try again: