Flutter项目中Android 运行提示kotline升级、gradle不一致问题

804 阅读2分钟

建议收藏

如果你的同事可以运行一个flutter项目,但是你运行不起来,提示需要升级kotlin、gradle等等...可以留步看一看。

题记

这两天,同事离职,项目交接过程中一个flutter项目发现我跑不起来,而同事那运行的好好的。 然后开始排查环境、排查flutter版本、排查studio版本、排查缓存...

通过fvm统一了fluter版本,又删除了gradle重新拉取的依赖,最终结果始终无法运行...提示Kotlin 版本需要升级。(需要从1.5.10 升级到1.7.10),升级kotlin 需要升级gradle,升级gradle从6.5升级到7.0。而同事那边一切正常...

大家都清楚升级kotlin和gradle需要漫长的排坑,而且为了弄清为什么同事可以运行,而我不行的缘由,经过了一系列排查后终于发现了一个很隐蔽的问题。

依赖排查

当发现问题后,我几乎第一时间想到了是依赖问题,在对照了线上的依赖库以后发现和同事的依赖配置一模一样。

哼哼,那肯定是 依赖向上兼容的问题也就是在pubspec.yaml中配置的依赖: libarary:^x.x.x 中的 ^ 符号导致依赖下载的时候会向上查找。

然后经过了去除^符号,采用固定符号后发现。。。。还是不行??!

image.png

最终结论

之后打开了通过打开两个电脑上的 android 项目在gradle中进行排查哪个依赖的版本不一致.

image.png

image.png

一顿对照gradle版本以及kotlin版本配置后,发现到了两个依赖的gradle版本设置到了 7.xx,而我同事电脑上市3.x,我这分别是:package_info_plusshared_preferences_android两个依赖的gradle出现了问题。

之后我回到了flutter的pubspec.yaml的配置中发现 package_info_plus、和shared_preferences_android都和同事的配置的一模一样,而且也没有兼容符号,全部采用的固定版本号。这为什么会下载不一样的两个library呢??于是我查看了 flutter下载的plugin版本号。

查看后发现,这两个依赖版本号确实是一致的,但是他们会附带一些渠道的版本会不一致?!!!

emmmm 好的,明白问题的原因就好解决了

image.png

解决

我们将渠道包的对应版本号也固定住。重新下pub get ,rebuild后,运行。

成功运行~完美解决。

image.png

补充

pubspec.lock中也可以看到下载的依赖版本号和地址,如果有的插件找不到对应也可以去里面进行查找。