我无法编辑安卓模拟器的host文件

5

我尝试编辑Android模拟器的host文件。我按照以下步骤进行:

step1
adb root
step2
adb remount
step3
adb pull /system/etc/hosts .

然后我为客户主机信息添加了新的一行,然后推送hosts文件时出现了一些错误:
   step4
   adb push hosts /system/etc/hosts

错误信息:
adb: error: failed to copy 'hosts' to '/system/etc/hosts': couldn't create file: Read-only file system

环境信息:

   osx ei capitan  
   android emulator: android 7.1.1  
   android studio: 2.2.2  
3个回答

31

我遇到了同样的问题并解决了它。

运行模拟器:

emulator -avd <EMULATORNAME> -partition-size 512 -writable-system

我相信-writable-system参数是解决问题的关键。

在另一个终端/cmd提示符下:

adb root

adb -s emulator-5554 remount

adb -s emulator-5554 pull /system/etc/hosts hosts

现在,让你的魔法生效(将IP添加到主机文件)

adb -s emulator-5554 push hosts /system/etc/hosts

其他信息:

  • emulator-5554是设备名称,你可以使用adb devices找到你的设备名称
  • 模拟器程序位于android-sdk/tools中
  • adb程序位于android-sdk/platform-tools中

重要更新来自评论:

请查看steven在此帖子中有关在运行adb root之前运行adb reboot的评论。

Captain建议在将主机文件推送后运行adb reboot以避免黑屏错误。

开心调试 :)


1
现在在Ubuntu中切换到"./emulator -avd <EMULATORNAME> -partition-size 512 -writable-system" - Jackson Chengalai
只是提醒,如果您使用此(有效)方法,则每次都必须使用可写系统参数运行此模拟器,否则模拟器屏幕将会变黑。 - airowe
请在你的回答中添加 adb reboot!这非常重要。否则,您将无法再从avd管理器启动模拟器! - steven

3

在推送主机文件后运行adb reboot,您将不再遇到黑屏问题。


这个答案真的很重要!如果你在-writable-system模式下启动后不重新启动,avd-manager会出现qemu-system-i368.exe已停止工作的崩溃。如果可以的话,我会给你10个赞。 - steven

2

我之前尝试了其他解决方案,但遇到了问题。经过多次测试后,我决定写下另一个答案,希望对其他人有用。

以下是我成功的步骤(在 Windows 10 上使用 Android Studio):

  • 启动 Android Studio 并打开 AVD 管理器,启动您的模拟器。
  • 打开 PowerShell 并导航到您的 Android SDK / platform-tools/ 目录。
  • .\adb.exe reboot -writable-system (您的模拟器现在应该会重新启动)
  • .\adb.exe root
  • .\adb.exe remount
  • .\adb.exe pull /system/etc/hosts C:\Temp\hosts
  • 编辑您的 hosts 文件
  • .\adb.exe push C:\Temp\hosts /system/etc/hosts
  • .\adb.exe unroot
  • 现在您可以在模拟器中打开浏览器并打开您的自定义域名,以检查您的 hosts 文件是否已更改。
  • 点击模拟器的关闭图标以强制保存快照进行关闭。您应该会看到“正在保存状态…”的消息。
  • 现在再次从 AVD 管理器启动您的模拟器。您的 hosts 文件应该保留。所以再次检查您的域名。

在以可写系统模式启动、root 并在不执行 unroot 的情况下停止模拟器后,我遇到了非常奇怪的无法启动模拟器的问题。问题是:每当快照失败时,模拟器都会进行冷启动,您的 hosts 文件就会消失。在这种情况下,您需要重复所有步骤。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接