任何人都知道如何编辑在nougat中运行的android studio模拟器中的/ etc / hosts文件?我将编辑它,以便我可以在我的本地Web服务器中使用我的虚拟主机。我尝试使用adb通过终端进行编辑,但是它返回了只读文件系统。尝试使用chmod但仍然失败。
更新: 我也尝试使用adb来拉动和推送文件 $ ./adb -s emulator-5554 push~ / Desktop / hosts / system / etc / hosts
adb:错误:无法复制' / Users / Christian / Desktop / hosts'到' / system / etc / hosts':无法创建文件:只读文件系统
答案 0 :(得分:48)
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
答案 1 :(得分:11)
以下是我在OSX上的工作方式。在阅读了一堆不同的指令之后似乎没有什么对我有用,直到有人提到你有一个非常狭窄的窗口,用于将文件从磁盘复制到模拟设备,或者它再次变为只读
./adb root && ./adb -s emulator-5554 remount && ./adb -s emulator-5554 push ~/Desktop/hosts /system/etc/hosts
'模拟器-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
我希望这可以帮助别人,因为我花了很长时间试图解决这个问题。
答案 2 :(得分:8)
分步
使用以下命令启动仿真器...
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'
按如下所示扎根并重新安装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 #
答案 3 :(得分:5)
我能够通过使用-writable-system启动模拟器并使用adb remount重新安装模拟器来编辑/ etc / hosts文件。之后,模拟器中的hosts文件是可编辑的。我尝试推送/替换文件并成功。
答案 4 :(得分:5)
以下是我在 Windows 终端上的 Windows 机器上遵循的步骤: 运行以下命令以了解您的 AVD:
emulator -list-avds
运行以下命令打开模拟器为可写模式:
emulator -avd Pixel_XL_API_29 -writable-system -no-snapshot-load
将 Pixel_XL_API_29 替换为您的 AVD 名称。
忽略那里的警告。
在新的终端选项卡中运行以下命令:
等待您的模拟器重新启动。最多可能需要 1 分钟。
当模拟器重新启动时,运行以下命令:
之后您将收到重新挂载成功的消息:
现在是时候将我们的主机文件从 Windows 机器推送到 Android 的模拟器
adb push D:\hosts /system/etc/
D:\hosts 是我的 Windows 机器的 D 驱动器中存在的主机文件的位置。 /system/etc/ 是 Android 模拟器中我们要复制该文件的位置。
要验证主机文件是否已推送,您可以运行以下命令:
您将在终端中看到 hosts 文件的内容:
答案 5 :(得分:3)
按照以下3个步骤进行操作:
./emulator -avd <emulator_name> -writable-system
adb remount
adb push hosts /system/etc/
注意:
emulator
位于android-sdk中。对我而言,它位于sdk/emulator
。www.facebook.com
解析为127.0.0.1,因此会在模拟器上阻止www.facebook.com
。答案 6 :(得分:3)
解决此问题的另一种方法是使用 adb 命令行工具。
export ANDROID_HOME="/Users/YOUR_USERNAME/Library/Android/sdk"
export PATH=$ANDROID_HOME/emulator:$ANDROID_HOME/tools:$PATH
编辑:对于 Windows 应该是这样的(而不是工具所需的平台工具 [或 adb 所在的路径])
C:\Users\YOUR_USERNAME\AppData\Local\Android\sdk\platform-tools
C:\Users\YOUR_USERNAME\AppData\Local\Android\sdk\emulator
emulator -list-avds
emulator -avd YOUR_AVD_NAME -writable-system -no-snapshot-load -no-cache
adb devices #you should see your devices
adb root
adb shell avbctl disable-verification
adb reboot
adb root
adb remount
adb push ~/Documents/hostsandroid /etc/hosts
现在,您应该可以通过 Android Studio 中的设备文件资源管理器查看您的 hosts 文件。
编辑:在这种情况下,您没有看到设备文件资源管理器,如果检测到 Android 框架,您可以检查事件日志。如果是这样,请单击“配置”,您就完成了。
adb root
adb remount
adb push ~/Documents/hostsandroid /etc/hosts
答案 7 :(得分:2)
首先找到你的系统hosts文件并复制到桌面
然后使用系统映像 Nougat x86_64 Android 7.1.1(非 Google API 版本)创建虚拟设备 Nexus 5
然后转到终端中的 /Android/sdk/emulator 然后运行以下代码,请在下面添加您自己的设备名称,因为我的是 Nexus_S_API_25 =>
答案 8 :(得分:1)
您可以通过更改访问权限(只读为RW)来使用ADB Shell编辑文件
答案 9 :(得分:0)
尝试@ P.O.W答案,
确保在主机文件的最后一个条目之后有一个空白行 如果在主机文件中使用选项卡,请用空格替换它们 重新启动Android,然后重试:
adb reboot
答案 10 :(得分:0)
乏味但有效的是,您可以在模拟器外壳中逐行构建一个新的主机文件。
您可以在PC或Mac命令行/ powershell /终端中编辑/重新安装模拟器(以获得可写文件系统)(如果模拟器已经在运行,请停止模拟器,然后...):
emulator -avd <avdname> -writable-system
(这将启动具有可写文件系统的新模拟器)
adb root
adb remount
然后启动仿真器外壳程序:
adb shell
现在您位于模拟器中。授予自己root访问权限:
su
进入主机目录:
cd /etc
也许是备份主机文件的好时机:
cp hosts hosts.bak
然后使用以下命令逐行构建一个新的主机文件(在临时文件hosts2
中):
echo '127.0.0.1 localhost' >> hosts2
echo '::1 ip6-localhost' >> hosts2
echo '192.168.1.xxx my.localdomain.com' >> hosts2
然后将您的hosts2文件重命名为主机:
mv hosts2 hosts
答案 11 :(得分:-1)
place all these export in z shell using terminal
vim ~/.zshrc press enter
then zshell will open
then press i
past all the export (verify the path i have used all default location for instalation)
then press esc
then press this :wq!
press enter
close terminal and open it again
export PATH="$PATH:$HOME/Dev/flutter/bin"
export GEM_HOME=$HOME/.gem
export PATH=$GEM_HOME/bin:$PATH
export ANDROID_HOME=$HOME/Library/Android/sdk
export ANDROID_SDK_ROOT=$HOME/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/emulator
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/tools/bin
export PATH=$PATH:$ANDROID_HOME/platform-tools
only use google apis image do not usese play image
u will get list of avds
emulator -list-avds
emulator -avd Nexus_5_API_29 -writable-system (do not close terminal) (open a new terminal)
adb root
adb remount
copy mac host file to Downloads from /private/etc/hosts
adb push Downloads/hosts /system/etc/hosts
adb reboot