在flutterlab中执行flutter build aar 或者flutter build apk,此时默认生成flutter-release.aar,引入智造中,会报错找不到io.flutter.plugins等,因为flutter build aar 指令并不会将依赖的第三方plugin, module 或者 libary 打入到 aar 中,需要搭配 fat-aar 。
此时需要配置fat-aar等相关第三方库到flutterlab的build.gradle中,但是因为每次执行flutter pub get,.android文件夹就会重新生成,那么就需要使用脚本向build.gradle中进行环境配置代码注入
Fat-aar以及 打包flutter 第三方plugin的 注入成功后,第一次可以执行flutter build Apk会成功,但在执行uploadArchives时,会提示* What went wrong: Could not determine java version from '12.0.1'.
需要将gradle_wrapper中gradle版本由4.6改为5.1.1,但是每次执行脚本,这个版本号都会重置
注入上述代码成功,修改gradle版本为5.1.1 ,并成功执行flutter build Apk后,再次执行 flutter build Apk/flutter build aar/uploadArchives都会失败
尝试,不执行flutter build Apk ,直接uploadArchives
遇到的问题
打包Aar并上传时遇到的问题
Gradle build tools 3.2.1, Gradle wrapper version 4.6会报 What went wrong: Could not determine java version from '12.0.1'. (这个问题是java版本和gradle版本不兼容)
Gradle build tools 3.2.1, Gradle wrapper version 5.1.1 解决了上面12.0.1的问题,但是报出新的问题,那就是执行uploadArchives/ build aar等时会报flutter:reBundleAarRelease Failed的错误
Gradle build tools 3.4.1, Gradle wrapper version 5.1.1 可以解决上述问题
值得注意的是solution库里的maven上传,Gradle build tools 3.0.1, Gradle wrapper version 4.1 也没问题
需要在flutter.sh中解决,gradle和 build tools version导致上传失败的问题。
因为每次执行flutter pub get, .android 文件夹都会被重置。
所以需要在flutter pub get 之后,通过脚本写入正确的版本号
接入智造项目时遇到的问题
提示找不到flutter plugin的引用,需要将api('code.solution.flutterlab:flutterlab:1.0-SNAPSHOT@aar')即关闭传递依赖,使用本地flutter-release.aar包不会出现这个问题。(依赖传递: https://juejin.im/entry/59918304518825489151732d)
提示找不到com.crashlytics.sdk.android:crashlytics-ndk,此时需要在host build.gradle 中添加
implementation('com.crashlytics.sdk.android:crashlytics-ndk:2.0.5@aar') {
transitive = true
}
使用flutterlab源码接入,不会出现找不到com.crashlytics.sdk.android:crashlytics-ndk这个问题。
snapshot未即时更新,需要在引用处添加配置
// SNAPSHOT(changing)和+号(dynamic)版本默认24小时自动更新,通过更改resolutionStrategy可以修改检查周期。
configurations.all {
// check for updates every build
resolutionStrategy.cacheDynamicVersionsFor 0, 'seconds'
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}