Flutter常見問題-Error retrieving device properties for ro.product.cpu.abi

若何發表於2019-06-08

解決方法

為了避免後來看到的小夥伴們走彎路,先直接貼出解決方法,其餘內容只是記錄還原一下問題。

方法: 把Android Platform Tools 29換成Android Platform Tools 28,下載連結在文末。

問題重現

說來也奇怪,就出去上了個實驗課,回來Android Studio就編譯不了flutter app。控制檯部分輸出如下:

Exit code -1073740940 from C:\SDK\platform-tools\adb -s emulator-5554 shell -x logcat -v time -t l
複製程式碼

看輸出估摸著是adb的問題 於是bash了一下adb --version,輸出如下:

Android Debug Bridge version 1.0.40
Version 29.0.1-5303910
Installed as C:\SDK\platform-tools\adb.exe
複製程式碼

因為太蔡也沒能看出有什麼問題,於是想著去flutter doctor一下,檢查檢查問題,部分輸出如下:

[√] Flutter (Channel master, v1.7.2-pre.30, on Microsoft Windows [Version 10.0.17763.529], locale zh-CN)
[!]  Android toolchain - develop for Android devices (Android SDK version 29.0.1)
     × Android license status unknown.
     Try re-installing or updating your Android SDK Manager.
     See https://developer.android.com/studio/#downloads or visit https://flutterchina.club/using-ide/ to get more instructions.
[√] Android Studio (version 3.4)
[√] VS Code, 64-bit edition (version 1.34.0)
[!] Connected device
    ! No devices available
!   Doctor found issuses in 2 categories.
複製程式碼

所以問題大概是Android license的問題?好在下面給出解決方案:重新安裝或者升級SDK Manager

  • 重新安裝

    重新安裝顯然失敗了,輸出基本一致,不再貼出

  • 升級SDK Manager

    首先進入到SDK tools的bin目錄,cd C:\SDK\tools\bin,直接執行sdkmanager --update,本以為萬事大吉,然鵝部分輸出如下:

Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
複製程式碼

很明顯flutter doctor給出的解決方案,並沒有作用,於是只得上網四處搜尋一波。解決方案諸如adb kill之類的,沒有作用

一氣之下重灌了Android Studio,flutter docor之後,多了一行輸出如下:

Error retrieving device properties for ro.product.cpu.abi
複製程式碼

然鵝用這個去搜尋仍然沒有解決方案,只得翻牆出去找找(畢竟谷歌的東西) 很快找到了第一個26 May 2017的issue,下拉完基本是沒有解決的問題。於是繼續找到第二個23 Apr 2018的issue,翻到快最後時發現一個comment如下,發表於兩天前也就是6 June 2019,和我出現問題時間差不多

This is a problem with platform tools 29. Temporary fix in my issue
複製程式碼

看評論應該是platform tools 29的問題,後面他提及了一個issue,點開後得到一個解決方案。

Install the latest version of android studio beta on windows (platform tools 29 will be installed)
複製程式碼

OK,到這兒問題就很簡單了,降級platform tools

  1. 開啟SDK所在資料夾
  2. 移除platform-tools資料夾(確認結束了adb相關程式)
  3. 解壓platform-tools 28放進去替換就好

(Android Studio的SDK Manager似乎也能直接降級,但是不知道為什麼我這樣做卻沒有作用,所以建議還是下載手動替換)

以下是下載地址:

Windows: http://dl-ssl.google.com/android/repository/platform-tools_r28.0.2-windows.zip
macOS: http://dl-ssl.google.com/android/repository/platform-tools_r28.0.2-darwin.zip
Linux: http://dl-ssl.google.com/android/repository/platform-tools_r28.0.2-linux.zip
複製程式碼

OK,bash一下flutter doctor,全綠通過~

開啟AVD合影,完結撒花~

Flutter常見問題-Error retrieving device properties for ro.product.cpu.abi

再引用一句提供解決方案的大佬的話I found a temporary fix while we wait for a solution provided by the Flutter team

希望flutter能對我好點~少一點這種bug~