macOS 基于 Android Studio 修改模拟器 Hosts
内容提要
本文介绍了在 macOS 上使用 M 系列芯片的安卓模拟器的方法,包括安装和创建模拟器,修改 Hosts 文件以获取 Root 权限,以及检查和启用 ADB。
延伸解读
为何要避开 Google Play 镜像
文章强调,若需修改 Hosts 文件,模拟器必须支持 Root 权限。选择 Google Play 的 System Image 会导致模拟器只能以 Readonly 模式启动,无法获取 Root 权限。因此,在创建模拟器时应选择普通镜像,这是后续所有操作的前提。
命令行启动与权限控制
从 Android Studio 启动的模拟器仅有 Readonly 权限,无法修改系统文件。文章指出,必须通过命令行以 Writable 模式启动模拟器,并保持命令行窗口不关闭,否则模拟器会退出。这确保了模拟器具有可写系统分区,为修改 Hosts 奠定基础。
ADB 环境配置要点
文章提醒,ADB 通常随 Android Studio 安装,但需正确配置环境变量。由于作者使用 ZSH,配置文件为 ~/.zshrc,而非 Bash 的 ~/.bash_profile。配置后需重启终端,并通过 adb version 验证。读者应根据自身 Shell 类型调整配置文件。
修改 Hosts 的具体流程
修改 Hosts 需先确认模拟器端口号(如 5554),然后依次执行 adb root、adb -s emulator-5554 remount 和 adb pull 将 hosts 文件拉取到本地。编辑完成后,再通过 adb push 推回模拟器。整个过程需确保模拟器以 Writable 模式运行,且 ADB 连接正常。
Q&A
在 macOS 上使用 M 系列芯片的安卓模拟器,为什么不能选择 Google Play 的 System Image?
因为选择 Google Play 的 System Image 会导致模拟器只能以 Readonly 模式启动,无法获取 Root 权限,从而无法修改 Hosts 文件。
如何以 Writable 模式启动 Android 模拟器?
需要通过命令行启动,命令为:cd ~/Library/Android/sdk/emulator/,然后使用 ./emulator -avd <模拟器名称> -writable-system。注意命令行窗口不能关闭,否则模拟器会退出。
在 macOS 上如何检查 ADB 是否已启用?
在终端中运行 adb version 命令,如果显示版本信息则说明 ADB 已启用。如果未启用,需要配置环境变量,将 Android SDK 的 platform-tools 和 tools 目录添加到 PATH 中。
修改 Android 模拟器 Hosts 文件的具体步骤是什么?
首先通过 adb root 获取 Root 权限,然后使用 adb -s emulator-5554 remount 重新挂载系统分区,接着用 adb pull /system/etc/hosts ~/Desktop/hosts 将 Hosts 文件拉取到本地,修改后再用 adb push 推回模拟器。
如何确认 Android 模拟器的端口号?
通过命令行启动模拟器后,在模拟器的设置界面可以看到端口号(如 5554);或者通过 Android Studio 启动模拟器,也能看到端口号。
在 macOS 上配置 ADB 环境变量时需要注意什么?
需要注意自己使用的 Shell 类型,例如使用 Oh My Zsh 的 ZSH Shell 时,配置文件是 ~/.zshrc,而不是 .bash_profile。配置后需要重启终端或执行 source ~/.zshrc 使配置生效。