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,感激涕零。组件化