Flutter 混合開發組件化與工程化架構android
開發 Flutter 應用的同窗都知道,有個痛點就是若是是團隊協做開發的話,就會存在使用的 Flutter 版本不一致的問題,就算只是我的開發,若是須要用 ci 打包的話,打包機上的版本也須要去保持一致,好比 A 同窗在開發時,發現 Flutter 低版本有個 bug,升級到高版本就能夠解決,但 B 同窗並無同步升級,這就致使在兩方打出來的包不同,若是這個 bug 不明顯,那這裏就會有很大的隱患,使用 ci 同理。ios
若是有使用 gradle 的同窗會知道,在使用 gradle 構建應用時,會推薦使用 gradlew,這樣會使用在 gradle-wrapper.properties 中配置的 gradle 版本,這就是解決了 gradle 版本差別的問題。git
同理,咱們也能夠仿 gradle 這種作法寫一個 flutterw 的腳本,咱們用 flutterw 來代替 flutter 命令。 首先咱們先在 wrapper 目錄下建立一個 flutter-wrapper.propertiesgithub
distributionUrl=https://github.com/flutter/flutter.git
flutterVersion=1.6.6
flutterChannel=dev
androidDir=.android
iosDir=.ios
複製代碼
上面三個不用解釋,androidDir 和 iosDir 是用於指定在哪裏生成 flutter.sdk
和 FLUTTER_ROOT
的配置,將 sdk 目錄指向咱們的固定版本的 Flutter SDK。接下來咱們就可使用 flutterw 來代替 flutter。bash
flutterw 的實現並不麻煩,首先咱們從 flutter-wrapper.properties 讀取配置,判斷是否須要下載 Flutter SDK,咱們會將 SDK 下載在 .flutter 目錄下,接着判斷是否須要切換版本,而後將咱們的參數傳遞給 flutter 腳本,最後設置 SDK 目錄。架構
githubapp
這裏我只實現了 sh 腳本,bat 版本後面有空再實現了,或者哪位大佬實現下,提個 PR,感激涕零。組件化