Home » Android » How to edit /etc/hosts file in Android Studio emulator running in nougat?

How to edit /etc/hosts file in Android Studio emulator running in nougat?

Posted by: admin April 23, 2020 Leave a comment


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

How to&Answers:
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


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

  1. Start your emulator.
  2. In your terminal find the folder “platform-tools” for your devices
  3. Prepare the hosts file you want to copy to your device (in my case i put it on desktop)
  4. 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 ./adb devices

after that the terminal responded with

restarting adbd as root
remount succeeded
[100%] /system/etc/hosts

you can veryfy the copy was successfull by ./adb shell and then cat /system/etc/hosts

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 my-virtual-host

I hope this helps someone as i spet quite some time trying to figure this out.


Step by Step

  1. Don’t Create the AVD with a Google Play image.
  2. Use for example Google APIs Intel x86 Atom System Image.
  3. Start the emulator with the following command…

    emulator.exe –avd <avd name> -writable-system

For example:

    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'
  1. 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       localhost
    ::1             ip6-localhost
    generic_x86:/system/etc # echo "   ilyasmamun.blogspot.com" >> hosts
    generic_x86:/system/etc # cat hosts       localhost
    ::1             ip6-localhost     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 :

  1. Start emulator in writable mode : ./emulator -avd <emulator_name> -writable-system
  2. remount : adb remount
  3. push the hosts file attached : adb push hosts /system/etc/

Note :

  1. Run one and only one emulator_name with above steps
  2. executable emulator is located within android-sdk. For me it was under sdk/emulator.
  3. Attached hosts file will resolve www.facebook.com to, hence blocks www.facebook.com on emulator.


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:

adb reboot