Flutter 踩坑

最近在學習 Flutter, 遇到一些奇奇葩葩的問題,各類買家秀與賣家秀使人懵逼,明明別人的代碼也是這樣寫~~~~~~~~html

1、Android 原生引入 flutter 的問題

其實這個引入步驟比較簡單前端

  • 建立一個 flutter module
flutter create -t module flutter_module
複製代碼
  • 配置 android 項目 settings.gradle 文件
setBinding(new Binding([gradle: this]))  
evaluate(new File( 
    new settingsDir.parentFile,
        'flutter module的目錄/.android/include_flutter.groovy'))
))
複製代碼
  • build.gradle 配置文件中添加依賴
implementation project(':flutter')
複製代碼

總體配置就這麼簡單,可是運行的時候的時候,項目掛了,出現瞭如下錯誤android

錯誤: 程序包android.support.annotation不存在
錯誤: 找不到符號
符號: 類 Fragment
錯誤: 找不到符號
符號:   類 NonNull
位置: 類 FlutterFragment
錯誤: 方法不會覆蓋或實現超類型的方法
錯誤: 找不到符號
符號:   方法 getArguments()
位置: 類 FlutterFragment
錯誤: 方法不會覆蓋或實現超類型的方法
錯誤: 方法不會覆蓋或實現超類型的方法
複製代碼

查看編譯後的源碼,確實 flutter_module 中一些依賴包不存在 bash

google 一番以後發現是 Android 包管理機制的問題,若是咱們在安裝 Android Studio 的時候勾選了 Androidx,會默認使用 androidx 管理, 如圖 工具

對於這個,解決方案有學習

  1. 下載Android Studio從新安裝,這種比較麻煩
  2. 全局修改配置,藉助 Android Studio 工具實現代碼 遷移,詳情可參考 遷移指南 可是這些步驟仍是不能解決個人問題,個人flutter_module 包依舊有一些舊的引用代碼形式,仔細分析,個人 flutter_module 是經過 flutter create -t module 這種方式實現的,多是這種命令生成的代碼是舊的包管理機制,猜測有沒有生成 androidx 機制的呢,Google 以後,發現真的有
flutter create --androidx -t module flutter_module
複製代碼

完美解決,山重水複疑無路???不存在的,果然,解決方案總比問題多gradle

2、Android 啓動不明緣由

Process 'command 路徑/flutter/bin/flutter'' finished with non-zero exit value 1 複製代碼

這個問題就更懵逼了,可是能夠經過ui

build clean 
複製代碼

解決,緣由還不是很清楚this

3、總結

其實對於 前端同窗,學習 flutter 過程當中,可能更多的挑戰是對原生陌生,仍是須要了解一些原生開發知識,不過,不少問題 google 如下,冷靜分析下仍是能解決google

相關文章
相關標籤/搜索