資深Android研發全面總結:Flutter遇到的那些坑

作者:盧召韋

要想成爲一名優秀的Android開發,一份 知識體系 是必不可少的~

Flutter是一個新的跨平臺開發的工具,博主也玩了一段時間,一步步的踩着坑摸石頭過河,這其中受盡了各種各樣的坑,各種谷歌,stackoverflow,Flutter官網等查資料,然而有些問題還是不能及時解決,於是就自己嘗試着慢慢的摸索出了一些解決方案,在這裏就係統的整理一下分享給大家,只希望大家覺得內容不錯的話點個小贊,順便評論轉發一波

一、Unable to find git in your PATH

錯誤如圖所示:

【原因】

未配置git環境變量或者配置不對。正確的應該是git根路徑\bin。

二、git clone下載Flutter源碼倉庫,出現error: RPC failed; curl 18 transfer closed with outstanding read data remaining

【原因】

由於Http協議錯誤,當Clone的時候,因爲curl的postBuffer默認值太小的原因,而項目可能本身比較大,所以下載失敗。

【解決方案:】

打開git命令行 輸入 git config –global http.postBuffer 524288000,然後可以輸入 git config –list查看剛纔的設置是否生效。

說明: git config –global http.postBuffer 524288000 命令的意思:相當於把curl的postBuffer的值修改的大一些。524288000的單位是B,相當於500MB。

三、執行flutter命令的時候,360殺毒軟件彈窗提示有病毒。

【解決方案:】

點擊右下角“信任此文件”即可。建議執行flutter工程的時候,暫時關閉殺毒軟件,如圖所示。

四、執行flutter install命令安裝apk到模擬器的時候報錯,報錯提示是:

【原因】

由於使用了native libraries 。該native libraries 不支持當前的cpu的體系結構。我當前用的是x86的模擬器。

【解決方案】

打開項目根目錄/android/app/build.gradle,在android節點裏面添加以下內容:

splits{
    abi {
        enable true
        reset()
        include 'x86', 'armeabi-v7a','x86_64'
        universalApk true
    }
}

具體的請看下圖所示:

如果以上操作還不行就換一個arm的模擬器或者真機運行。如下圖就是運行在arm模擬器上的示範操作:

五、執行flutter upgrade命令過程中出現的問題。

【解決方案】

重啓命令行,重新執行flutter upgrade命令,它會自動下載sdk需要的各種工具,這說明環境是沒問題的,配置也是沒問題的,網絡也是OK的。如下圖所示:

六、編譯項目的過程中出現的版本兼容問題,如圖所示。

【解決方案有以下幾種方式】

只要看到錯誤信息含有 which doesn’t match any version 這樣的提示基本都可以使用以下解決方案:

● 1. 在項目的根路徑的pubspec.lock文件和pubspec.yaml文件裏面搜索,確保pubspec.lock文件的引入的第三方插件庫的版本號和pubspec.yaml文件裏的版本號一致。

● 2. 項目裏面引入的第三方插件庫版本和開發環境不匹配導致的兼容問題。建議把第三方插件庫的源碼下載下來,放到項目裏面去,然後去修改插件庫源碼裏依賴的Flutter和Dart版本配置信息即可。使用源碼是最好的解決方式。

● 3. 在C盤的Flutter緩存目錄,具體爲:C:\Users\Administrator\AppData\Roaming\Pub\Cache\hosted,這裏面默認是一個名爲pub.dartlang.org的文件夾,我們現在查找看看有沒有叫做pub.flutter-io.cn的文件夾,如果有,爲了省事,建議把pub.dartlang.org的文件夾裏面的文件全部拷貝到pub.flutter-io.cn文件夾裏面就可以了。如果沒有,就創建一個名爲pub.flutter-io.cn的文件夾,然後再執行拷貝工作。(一般來講,配置了國內鏡像的話,就會有pub.flutter-io.cn文件夾)

七、flutter upgrade因爲版本兼容問題導致升級失敗。

【解決方案】

這裏面是因爲flutter_tools包的兼容性問題導致的,可能是sdk版本兼容性問題,我們可以執行flutter upgrade升級一下Flutter再試試看,如果不行,就按第六條的去做。

八、Unsupported Android Studio version,意思是:Flutter插件不支持當前AS版本。

【原因】

當前的AS是3.2的版本。Flutter插件對AS3.2暫時還不兼容。

【解決方案】

使用3.0或者3.1版本的AS開發就OK了。

九、執行flutter upgrade命令更新Flutter時,出現SSL read: error:00000000:lib(0):func(0):reason(0), errno 10054

【解決方案】

打開git命令行輸入 git config –global http.postBuffer524288000,然後可以輸入 git config –list 查看剛纔的設置是否生效。

十、使用flutter doctor命令出現的錯誤,這類錯誤可能有多種形式,它們都有一個共同的關鍵字 StartBitsTransferCOMException

我遇到的幾個不同的錯誤示例圖如下:

【解決方案】 原因有2個:

(1)BITS傳輸服務未開啓:

計算機 --> 右鍵 管理 --> 服務和應用程序裏面,點擊服務,然後如下圖所示:

然後選中圖中標記的這個,右鍵點擊屬性,然後改成自動,確定。如下圖所示:

(2)沒有設置國內鏡像:

如果你在國內使用 Flutter,那麼你可能需要找一個與官方同步的可信的鏡像站點,幫助你的 Flutter 命令行工具到該鏡像站點下載其所需的資源。你需要爲此設置兩個環境變量:PUB_HOSTED_URL和FLUTTER_STORAGE_BASE_URL,然後再運行 Flutter 命令行工具。

需要添加國內鏡像到環境變量中。具體如下:

FLUTTER_STORAGE_BASE_URL: https://storage.flutter-io.cn
PUB_HOSTED_URL: https://pub.flutter-io.cn

如下圖所示:如果還出現下載錯誤 建議重啓電腦再試試看。

十一、update_dart_sdk.ps1文件裏面出錯,有多種錯誤表現形式,如下面3個圖所示。

【解決方案】

建議刪除Flutter根路徑/bin/cache文件夾,然後重新執行flutter doctor命令,Flutter根路徑/bin/cache文件夾所在位置如下圖所示:

最後

我自己從事 Android 開發,從業這麼久,我也積累了一些珍藏的資料,分享出來,希望可以幫助到大家提升進階

分享一份由幾位大佬一起收錄整理的Android學習PDF+架構視頻+面試文檔+源碼筆記高級架構技術進階腦圖、Android開發面試專題資料,高級進階架構資料

如果你有需要的話,可以在這Android學習PDF+架構視頻+面試文檔+源碼筆記免費領取

喜歡本文的話,不妨順手給我點個小贊、評論區留言或者轉發支持一下唄~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章