天天看点

手贱,Flutter版本升级带来的一系列坑。。。

作者:清风明月eagle

时光闹钟app开发者,请关注我,后续分享更精彩!

坚持原创,共同进步!

最近因某些原因加手贱,头脑一热,周末把flutter版本从2.10.5升级到3.3.3,大版本升级,然后。。。。。。

差一点就没然后。原有工程项目各种报错,跑不起来,排雷排到怀疑人生。最后,花了接近两天时间,才算把项目重新完整跑了起来。将踩坑过程中遇到的问题做下整理,希望能给有相同遭遇的同学有一些参考。

flutter版本下载地址

https://docs.flutter.dev/release/archive?tab=windows

选择对应系统平台,版本下载

手贱,Flutter版本升级带来的一系列坑。。。

国内镜像添加

系统添加以下环境变量,笔者重装系统后忘记这步,之间又浪费很多时间[笑哭]

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版本升级带来的一系列坑。。。

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插件版本兼容

由于插件市场参差不齐,开发者不一定严格遵守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版本升级带来的一系列坑。。。

总结

本文整理了flutter升级后踩坑的一些问题解决方法。需注意gradle版本和gradle插件版本匹配;flutter插件小版本兼容问题;升级后对原有项目影响,如apk安装包大小等。问题可能还有很多,不能一 一穷举。欢迎小伙伴们留言分享。

继续阅读