The minCompileSdk (31) specified in a dependency ...

个人背景:Flutter两年,原iOS开发

项目相关信息:

Flutter SDK 2_8_0

compileSdkVersion 29

ext.kotlin_version ='1.3.50'

第一次写文章,没有准备,直接上问题.. 

app/build.gradle中一直用的是 compileSdkVersion 29,某天手贱操作了flutter clean,遂产生图示中的问题。

翻阅了很多文章,基本的两种解决方法如下:

1、更改compileSdkVersion 为 31,后面可能需要把 Flutter 的 SDK 改成 2_8_1, 进而需要在 android/build.gradle 中把 kotlin 版本从 1.3.50 改成 1.5.31; 这样改变之后有些小伙伴就能运行了,但我这里不行,因为项目已经运行一年多了,里面安装了大量的三方插件,各种以来繁多,所以这样操作后出现了jar包冲突;最后被我pass掉了.

2、app/build.gradle 中写入相关配置,如下图这种

以上两种方法对我的项目都不好使,相信有些小伙伴也是如此,那么我们就要看具体原因是什么了,这个问题对安卓小伙伴可能略显小儿科了,但是对于我这个iOS转过来的很不友好。

这个问题产生的原因究其根本就是引用的三方插件中存在一个或多个插件的compileSdkVersion大于我们项目中的compileSdkVersion,一般插件更新都是大版本改配置,小版本加需求改bug什么的,但是你们懂的.. 所以我们在继承三方插件的时候多使用了诸如这样的写法 permission_handler: ^8.3.0  这种写法指定了最小插件版本,例如permission_handler ^8.3.0,在我们pub get 的时候会加载 8.3.0 ~ 9.0.0 之间的最新版本,那么如果这个最新版本更改了compileSdkVersion且超过了我们项目中的数值,在编译的时候就会产生文章最开始显示的问题,这个时候我们需要做的就要先查到版本冲突的插件库,然后到 pub.dev 中查看这个插件的 changelog (一般都会标明), 然后在引用的时候去掉^,将插件版本定死。

 插件版本定死 !   插件版本定死 !   插件版本定死 !  (重要的事情说三遍~)

按照我的方法来做,基本就能解决这个问题了.. 

PS:其实中间还遇到过其他问题,这里简单说.

1、卡死在Running Gradle task 'assembleDebug'...  解决方法:换源(阿里)

2、某些插件不更新(例如 tencent_live_fluttify-0.3.0),把插件down到本地,放心大胆的改,引用路径改成本地就行;

pubspec.yaml 改后的大致样子(这是新项目的,老项目没贴图,插件太多太乱)

总结:稳定的才是最好的,别总想着更新,毕竟身为开发不能跟自己过不去.. 

你可能感兴趣的:(The minCompileSdk (31) specified in a dependency ...)