Как отредактировать файл /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
Шаг за шагом
- Не создавайте AVD с изображением Google Play.
- Используйте, например, API Google Intel System x86 System Image.
-
Запустите эмулятор с помощью следующей команды…
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 и перемонтируйте 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
Ответ 8
я попробовал объяснение @ylias
записываемый-система
Но когда я попробовал ADB root
корень adb
я даю ошибку и не могу перемонтировать устройство. Не могли бы вы мне помочь
перезагрузка adb