Chr*_*ero 28 android android-emulator android-studio
任何人都知道如何编辑在nougat中运行的android工作室模拟器中的/ etc/hosts文件?我将编辑它,以便我可以在我的本地Web服务器中使用我的虚拟主机.我尝试使用adb通过终端进行编辑,但是它返回了只读文件系统.尝试也使用chmod但仍然失败.
更新:我还尝试使用adb $ ./adb -s emulator-5554 push~/Desktop/hosts/system/etc/hosts拉取文件
adb:错误:无法将'/ Users/Christian/Desktop/hosts'复制到'/ system/etc/hosts':无法创建文件:只读文件系统
P.O*_*.W. 56
1) android-sdk-macosx/tools/emulator -avd <avdname> -writable-system
2) ./adb root
3) ./adb remount
4) ./adb push <local>/hosts /etc/hosts
Run Code Online (Sandbox Code Playgroud)
Android文件主机即可
/etc/hosts <--- This worked for me
/etc/system/hosts
/system/etc/hosts
Run Code Online (Sandbox Code Playgroud)
校验
1) ./adb shell
2) cat /etc/hosts
3) ping customsite.com
Run Code Online (Sandbox Code Playgroud)
小智 12
以下是我在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
你可以veryfy的副本是由全成./adb shell
,然后cat /system/etc/hosts
然后,我可以从模拟设备连接到我的虚拟主机
在这里完成是我的主机文件的样子
10.0.2.2 my-virtual-host
我希望这可以帮助别人,因为我花了很长时间试图解决这个问题.
Phi*_* D. 12
解决这个问题的另一种方法是使用adb命令行工具。
\nexport ANDROID_HOME="/Users/YOUR_USERNAME/Library/Android/sdk"\nexport PATH=$ANDROID_HOME/emulator:$ANDROID_HOME/tools:$PATH\n
Run Code Online (Sandbox Code Playgroud)\n编辑:对于Windows应该是这样的(而不是需要平台工具[或adb所在的路径]的工具)
\nC:\\Users\\YOUR_USERNAME\\AppData\\Local\\Android\\sdk\\platform-tools\nC:\\Users\\YOUR_USERNAME\\AppData\\Local\\Android\\sdk\\emulator\n
Run Code Online (Sandbox Code Playgroud)\nemulator -list-avds\n
Run Code Online (Sandbox Code Playgroud)\nemulator -avd YOUR_AVD_NAME -writable-system -no-snapshot-load -no-cache\n
Run Code Online (Sandbox Code Playgroud)\nadb devices #you should see your devices\nadb root\nadb shell avbctl disable-verification\nadb reboot\nadb root\nadb remount \n
Run Code Online (Sandbox Code Playgroud)\nadb push ~/Documents/hostsandroid /etc/hosts\n
Run Code Online (Sandbox Code Playgroud)\n现在您应该能够使用 Android Studio 中的设备文件资源管理器查看您的主机文件。\n编辑:在这种情况下,您看不到设备文件资源管理器,如果检测到 Android 框架,您可以检查事件日志。如果是这样,请单击“配置”,然后就完成了。\n
export ANDROID_HOME="/Users/YOUR_USERNAME/Library/Android/sdk"\nexport PATH=$ANDROID_HOME/emulator:$ANDROID_HOME/tools:$PATH\n
Run Code Online (Sandbox Code Playgroud)\n
Md.*_*mun 11
一步步
使用以下命令启动仿真器…
emulator.exe –avd <avd name> -writable-system
Run Code Online (Sandbox Code Playgroud)例如:
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'
Run Code Online (Sandbox Code Playgroud)
根植并重新安装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 #
Run Code Online (Sandbox Code Playgroud)我可以通过使用-writable-system启动仿真器并使用adb remount重新安装仿真器来编辑/ etc / hosts文件。之后,模拟器内的主机文件是可编辑的。我尝试推送/替换文件并成功。
以下是我在 Windows 终端上的 Windows 机器上遵循的步骤: 运行以下命令以了解您的 AVD:
emulator -list-avds
Run Code Online (Sandbox Code Playgroud)
运行以下命令以打开可写模式的模拟器:
emulator -avd Pixel_XL_API_29 -writable-system -no-snapshot-load
Run Code Online (Sandbox Code Playgroud)
将 Pixel_XL_API_29 替换为您的 AVD 名称。
忽略那里的警告。
在新的终端选项卡中运行以下命令:
等待您的模拟器重新启动。最多可能需要 1 分钟。
模拟器重启后,运行以下命令:
之后您将收到重新安装成功的消息:
现在是时候将我们的主机文件从 Windows 机器推送到 Android 的模拟器了
adb push D:\hosts /system/etc/
Run Code Online (Sandbox Code Playgroud)
D:\hosts 是我的 Windows 机器的 D 驱动器中存在的主机文件的位置。/system/etc/ 是 Android 模拟器中我们要复制该文件的位置。
要验证主机文件是否已推送,您可以运行以下命令:
您将在终端中看到 hosts 文件的内容:
虽然乏味,但有效,您可以在模拟器 shell 中逐行构建一个新的主机文件。
您可以在 PC/Mac/linux 命令行/powershell/终端中编辑/重新安装模拟器(以获得可写文件系统)。
(如果模拟器已经在运行,请将其停止,然后...):
emulator -avd <avdname> -writable-system
(这将启动一个具有可写文件系统的新模拟器)
仍然在您的 PC/Mac/Linux 终端中运行以下两个命令:
adb root
adb remount
然后通过 shell 连接到正在运行的模拟器:
adb shell
下面的这部分是从模拟器内部、刚刚建立的 shell 连接内运行的。
给自己 root 访问权限:
su
将目录更改为hosts
保存文件的位置:
cd /etc
要使模拟器遵循开发计算机的主机文件或给定域的 DNS,请使用 ip 添加域条目10.0.2.2
。
将新域条目行附加到模拟器主机文件的示例:
echo '10.0.2.2 mydev.domain.com' >> hosts
这10.0.2.2
是Android模拟器的特殊地址。它将将该域的 DNS 请求代理到您的开发计算机。因此,无论您的 PC/Mac/Linux 计算机托管 mydev.domain.com 文件列表的 IP 地址是什么,Android 模拟器都会使用它。
您现在可以退出根 shell 和模拟器 shell:
exit
exit
Run Code Online (Sandbox Code Playgroud)
(第一个让你摆脱su
。第二个从模拟器外壳退出,让你回到开发机器的终端)。
你完成了。您可以在模拟器中打开 Web 浏览器,在地址栏中键入刚刚添加到主机的域,然后检查模拟器是否正确路由该域。
Remount failed
如果您使用的是 Android 模拟器 29+ 并且正在获取
remount failed
Run Code Online (Sandbox Code Playgroud)
致电时adb remount
,请在此处查看Kidd Tang 的解决方法。
首先找到你的系统hosts文件并将其复制到桌面
创建后,使用系统映像 Nougat x86_64 Android 7.1.1(非 Google API 版本)创建虚拟设备 Nexus 5
然后在终端中转到 /Android/sdk/emulator 然后运行以下代码请在下面添加您自己的设备名称,因为我的是 Nexus_S_API_25 =>
归档时间: |
|
查看次数: |
26773 次 |
最近记录: |