Flutter 打包AAR项目集成总结

  • 在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'
  }

你可能感兴趣的:(Flutter 打包AAR项目集成总结)