1. 程式人生 > 實用技巧 >Android Studio 模擬器修改hosts檔案的方法 2020.8

Android Studio 模擬器修改hosts檔案的方法 2020.8

因為服務端尚未部署到真正的伺服器, 只在本地方便除錯。所以安卓訪問介面需要修改hosts檔案。但是根據網上的很多教程,直接通過adb命令修改並不好用會提示系統檔案只讀。

adb root
// adbd is already running as root
adb remount
// remount succeeded
adb pull /system/etc/hosts
// [100%] /system/etc/hosts
// 這裡對拉取的檔案進行修改
adb push hosts /etc/hosts
// adb: error: failed to copy 'hosts' to '/etc/hosts': Read-only file system

經過一番摸索,總算找到了解決方案。

起初找到的方案是通過adb shell 進入安卓系統命令列,修改檔案系統的只讀許可權。 但是實際測試發現並沒有用。 包括先將檔案推送到模擬器的 /sdcard 目錄,再通過模擬器命令行復制到系統資料夾等方法均以失敗告終。

其實最新的模擬器api已經不允許這樣操作了。 正確的方法是:

在模擬器啟動的時候增加 可寫引數

也就是說,你得先關閉模擬器,然後通過命令列增加啟動引數的方式啟動模擬器,直接通過Android studio 啟動是無法配置引數的。

cd ~/Library/Android/sdk/platform-tools //進入emulator所在的目標資料夾 
emulator -list-avds //列出所有模擬器,方法下一步操作模擬器的名字 emulator -avd Nexus_S_API_24_X86 -writable-system //啟動你想要修改的模擬器,其中 Nexus_S_API_24_X86 即為上一步你列出的要啟動的模擬器名字

這樣啟動成功後再通過上面的方法修改就可以了

adb root //root 執行 
adb remount //掛載檔案
adb pull /system/etc/hosts //將模擬器hosts檔案拉取到宿主機當前目錄
// 手動在指定資料夾下(本文中放在桌面)開啟host檔案修改
adb push ~/Desktop/hosts /system/etc/hosts //
將修改完成的hosts檔案放到模擬器中。 adb shell cat /etc/hosts //檢視host檔案是否修改成功

參考:https://stackoverflow.com/questions/41117715/how-to-edit-etc-hosts-file-in-android-studio-emulator-running-in-nougat