Как отредактировать файл /etc/hosts в эмуляторе Android Studio под управлением nougat?

Кто-нибудь знает, как отредактировать файл /etc/hosts внутри эмулятора студии Android, работающего в нуге? Я буду редактировать его, чтобы я мог использовать свой виртуальный хост на своем локальном веб-сервере. Я попытался редактировать его через терминал с помощью adb, но он возвращает файловую систему только для чтения. Пробовал также использовать chmod, но все равно он терпит неудачу.

Обновление: Я также пытался потянуть и нажав файлы с помощью adb $./adb -s emulator-5554 push ~/Рабочий стол/хосты/система/etc/hosts

adb: error: не удалось скопировать '/Users/Christian/Desktop/hosts' в '/system/etc/hosts': не удалось создать файл: файловая система только для чтения

Ответ 1

Мне удалось отредактировать файл /etc/hosts, запустив эмулятор с помощью -writable-system и перемонтировав эмулятор с помощью adb remount. После этого файл hosts внутри эмулятора доступен для редактирования. Я попытался нажать/заменить файл и преуспеть.

Ответ 2

1) android-sdk-macosx/tools/emulator -avd <avdname> -writable-system
2) ./adb root
3) ./adb remount
4) ./adb push <local>/hosts /etc/hosts

Хост файлов Android может быть

/etc/hosts <--- This worked for me
/etc/system/hosts
/system/etc/hosts

Проверка

1) ./adb shell
2) cat /etc/hosts
3) ping customsite.com

Ответ 3

Вот как я смог сделать это, работая на OSX. Прочитав кучу разных инструкций, ничего не сработало для меня, пока кто-то не упомянул, что у вас очень узкое окно для копирования файла с вашего диска на эмулированное устройство или оно снова становится только для чтения.

  • Запустите свой эмулятор.
  • В вашем терминале найдите папку "platform-tools" для ваших устройств.
  • Подготовьте файл hosts, который вы хотите скопировать на свое устройство (в моем случае я разместил его на рабочем столе)
  • Сгруппируйте кучу команд, чтобы быстро скопировать файл. Это то, что сработало для меня ./adb root && ./adb -s emulator-5554 remount && ./adb -s emulator-5554 push ~/Desktop/hosts /system/etc/hosts 'emulator-5554' - это имя моего устройства, которое вы можете найти, набрав ./adb devices

после этого терминал ответил

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

вы можете очень хорошо, что копия прошла успешно ./adb shell, а затем cat /system/etc/hosts

Затем я смог подключиться к своим виртуальным хостам с эмулируемого устройства

Просто чтобы быть полным, вот как файл моих хостов выглядел как 10.0.2.2 my-virtual-host

Я надеюсь, что это поможет кому-то, поскольку я довольно долго пытаюсь понять это.

Ответ 4

Выполните следующие шаги:

  • Запустите эмулятор в режиме записи: ./emulator -avd <emulator_name> -writable-system
  • remount: adb remount
  • нажмите файл hosts в приложении: adb push hosts /system/etc/

Примечание:

  • Запустите одно и только одно имя эмулятора с указанными выше шагами.
  • исполняемый emulator находится внутри android-sdk. Для меня это было под sdk/emulator.
  • Файл прикрепленных хостов будет разрешать www.facebook.com до 127.0.0.1, поэтому блокирует www.facebook.com на эмуляторе.

Ответ 5

Вы можете использовать оболочку ADB для редактирования файла путем изменения доступа (только для чтения к RW)

Ответ 6

Шаг за шагом

  1. Не создавайте AVD с изображением Google Play.
  2. Используйте, например, API Google Intel System x86 System Image.
  3. Запустите эмулятор с помощью следующей команды…

    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'
  1. Root и перемонтируйте AVD как следующие...

    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 #
    

Ответ 7

Попробуйте ответить @POW,

Убедитесь, что у вас есть пустая строка после последней записи файла hosts. Если вы используете вкладки в файле hosts, замените их пробелами "Перезапустить Android" и повторите попытку:

adb reboot