我需要强制 Android 手机模拟器映射,就像我在/etc/hosts
笔记本电脑上配置的那样。因此,我希望每次它尝试访问时my.great-website.local
,它都会以我的本地主机为目标,而不是访问互联网。我的笔记本电脑上有一个配置,如果我写入,https://my.great-website.local
我就会被重定向到localhost
环境。我希望在模拟器上也能有同样的效果,但我发现这很难做到。/etc/hosts
模拟器上是否有可访问的文件,我可以尝试将请求重新路由到10.0.2.2
IP(开发机器上我的主机环回接口的特殊别名 127.0.0.1)?
编辑:我发现很好的指导关于如何在模拟器中编辑/etc/hosts
如下内容(MacOS 特定手册):
Start Emulator
While on${ANDROID_HOME}/emulator:
./emulator -list-avds
./emulator -avd <emulator-name> -writable-system
Define Emulator hosts
While on${ANDROID_HOME}/tools:
adb root
adb remount
adb pull /system/etc/hosts Downloads/hosts
echo ‘10.0.0.1 pretty.url.of.yours\n’ >> Downloads/hosts
adb push Downloads/hosts /system/etc/hosts
adb reboot
不幸的是,我刚刚adb remount
收到一个错误Device must be bootloader unlocked
。
编辑 2:第二个选项是使用已完成此映射的 DNS 运行模拟器:
emulator @Nexus_5X_API_23 -dns-server 192.0.2.0,
192.0.2.255
但不幸的是,当我尝试时dnsmasq
,我不断收到一些权限错误:
dnsmasq: failed to create listening socket for 192.168.224.5: Permission denied
如果有人找到一种简单的方法来实现这一点,我将非常感激我的帮助。