close

同事說現在 Android 陣營不再支援以 Eclipse 開發,一定要在 Android Studio 開發,重建環境時陸續遇到一些問題,記錄下來。

 

 

狀況:錯誤訊息 "Lint found fatal errors while assembling a release target"

可以修正 lint 裡的 issue,或是修改 build script,關掉 lint 檢查。在專案裡的 Gradle Scripts 找到 build.gradle,在最後一組大括號前加入以下設定:

lintOptions {
    checkReleaseBuilds false   
      
    // Or, if you prefer, you can continue to check for errors in release builds,
       
     // but continue the build even when errors are found:

    abortOnError false     
}

 

 

 

狀況:要使用 /etc/hosts 進行測試

因為要讓 Android Studio 上的模擬器連接到我們自建的測試網站,最好的方法就是在 /etc/hosts 修改 domain name 對應,像是這樣:

tw.yahoo.com    127.0.0.1

不過如果只有在 macOS 的 /private/etc/hosts 這個檔案修改對應設定,只有 Xcode 模擬器可以吃得到這個設定。但 Android Studio 預設並不會吃作業系統裡 /etc/hosts 的設定值。

必須要先找到 SDK 的路徑,在 "How To Set Android SDK Path In Windows And Mac" 這篇是說用 nano .bash_profile. 去做 PATH 的設定,但是我覺得怪怪的。我還是仿 Windows 的做法,從 Android Studio 的 GUI 介面去找。macOS 的選單路徑與 Windows 稍有差異:

  1. 打開 Android Studio,點最左上角系統蘋果圖示右邊的 "Android Studio",在選單中找到 Preferences 
  2. 在左邊樹狀選單選擇 Apperance & Behavior > System Settings > Android SDK
  3. 畫面中的 "Android SDK Location" 就是實際的安裝路徑

像在 "How to edit /etc/hosts file in Android Studio emulator running in nougat?" 一文裡的 Android Studio 模擬器路徑設定在 "android-sdk-macosx/tools/emulator",我的 Android Studio 的 SDK 路徑卻在 "/Applications/sdk/tools/emulator"。

整體而言,我的作法如下,開一個 terminal 視窗(終端機),依序處理以下設定:

  1. 先修改系統的 /etc/hosts
    sudo vi /private/etc/hosts
     
  2. 設定 Android SDK 的 emulator & tools 的路徑,否則後續執行模擬器時會出現以下錯誤訊息:
    PANIC: Missing emulator engine program for 'x86' CPU.
    "Android Emulator Error Message: “PANIC: Missing emulator engine program for 'x86' CPUS.”" 文章中的說明,需要設定 Android SDK Path:
    export ANDROID_SDK=/Applications/sdk
    export PATH=$ANDROID_SDK/emulator:$ANDROID_SDK/tools:$PATH

     
  3. 查詢模擬器清單,例如我可以看到我有一台裝置的 avdname 是 "Pixel_XL_API_24"
    emulator -list-avds
     
  4. 執行模擬器為可讀寫模式
    emulator -avd "Pixel_XL_API_24" -writable-system
     
  5. 開啟模擬器後,再開一個新的 terminal 視窗,在 PATH 設定 sdk 路徑,讓系統認識 "adb" 這個指令
    export PATH=/Applications/sdk/platform-tools/:$PATH
     
  6. 參考《如何修改Android的hosts文件》,重啟 adb、調整 hosts 檔案權限
    adb root
    adb remount
    adb shell


    進入 adb shell 模式後,修改 hosts 檔案權限
    mount -o rw,remount /system
    chmod 666 /system/etc/hosts
    exit


    確定離開 adb shell 模式後(有時候下第一次 exit 會沒有跳出來,要下第二次才會離開),把 macOS 裡的 hosts 檔案餵給 adb 裡的 hosts
    adb push /private/etc/hosts /system/etc/hosts
     
  7. 進入 adb shell,確認有沒有吃到正確的 hosts 設定
    adb shell
    cat /etc/hosts
    ping tw.yahoo.com

一開始我在修改時會一直跳出各式各樣的錯誤訊息,尤其是 adb remount 必定執行失敗。後來看到有人說模擬器從 API 29 降到 API 24 就可以了,我也如法炮製,看起來果然如此。

有幾次會在設定後發生模擬器在執行 "emulator -avd <avd_name> -writable-system" 後螢幕全黑的窘境,如果發生了就到 Android Studio 的 AVD Manager 把模擬器刪掉重新安裝就好了。(有的人說從 AVD Manager 選 Wipe Data & Cold Boot Now,但我試過對我沒用)

 

 

arrow
arrow
    文章標籤
    app android
    全站熱搜

    小攻城師 發表在 痞客邦 留言(0) 人氣()