时光闹钟app开发者,请关注我,后续分享更精彩!
坚持原创,共同进步!
最近因某些原因加手贱,头脑一热,周末把flutter版本从2.10.5升级到3.3.3,大版本升级,然后。。。。。。
差一点就没然后。原有工程项目各种报错,跑不起来,排雷排到怀疑人生。最后,花了接近两天时间,才算把项目重新完整跑了起来。将踩坑过程中遇到的问题做下整理,希望能给有相同遭遇的同学有一些参考。
flutter版本下载地址
https://docs.flutter.dev/release/archive?tab=windows
选择对应系统平台,版本下载
国内镜像添加
系统添加以下环境变量,笔者重装系统后忘记这步,之间又浪费很多时间[笑哭]
FLUTTER_STORAGE_BASE_URL: https://storage.flutter-io.cn
PUB_HOSTED_URL: https://pub.flutter-io.cn
gradle和插件版本问题
Android应用,gradle版本和gradle插件版本必须对应,否则会产生各式各样问题。最好先检查下,可节约不少时间。
两者对应关系见以下地址:
https://developer.android.google.cn/studio/releases/gradle-plugin?hl=zh-cn
flutter项目中gradle版本更新
项目目录,android/gradle/wrapper/gradle-wrapper.properties文件更新
#Fri Jun 23 08:50:38 CEST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
# gradle版本地址
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip
flutter项目中gradle插件版本更新
项目目录,android/build.gradle文件,更新以下截图内容
flutter插件版本兼容
由于插件市场参差不齐,开发者不一定严格遵守flutter官方规范,一些插件同一大版本内部小版本间可能不兼容。新的小版本升级后,使用者一更新就可能导致之前好好的项目,突然无法启动。悲从中来,心态很容易炸裂。
项目根目录,pubspec.yaml文件更新
dependencies:
# 将^0.9.6版本形式改为固定版本0.9.6,防止小版本自动升级导致不可预知的兼容问题
# camera: ^0.9.6
camera: 0.9.6
执行flutter pub get 更新后,感觉插件未同步本地的,可以查看项目根目录pubspec.lock,该文件中有具体插件版本信息。
重新下载插件
删除根目录以下3个文件
pubspec.lock
.flutter-plugins
.flutter-plugins-dependencies
删除后,重新执行flutter pub get 。
apk文件翻倍问题
gradle插件升级后,发现打出的apk包比原来大了一倍多,这在移动下载场景中常常难于接受。经过了解,原来Android Gradle plugin 3.6.0或更高版本,android:extractNativeLibs默认值改成了false,之前版本值一直为true。这个值为true时在打包时会压缩文件资源。AndroidManifest.xml文件application节点设置该值。如下图
总结
本文整理了flutter升级后踩坑的一些问题解决方法。需注意gradle版本和gradle插件版本匹配;flutter插件小版本兼容问题;升级后对原有项目影响,如apk安装包大小等。问题可能还有很多,不能一 一穷举。欢迎小伙伴们留言分享。