沈阳网站优化哪家好,东莞市聚势网络科技有限公司,seo建站是什么,莱芜新闻联播回放背景
杂乱的项目依赖#xff0c;成为了安卓项目的噩梦。版本号的不统一#xff0c;经常导致一些依赖冲突。所以有了此文。
现象
安卓项目rebuild或者打release包的时候#xff0c;存在报错情况#xff1a; #xff08;一#xff09;kotlin version编译不一致导致报错 …背景
杂乱的项目依赖成为了安卓项目的噩梦。版本号的不统一经常导致一些依赖冲突。所以有了此文。
现象
安卓项目rebuild或者打release包的时候存在报错情况 一kotlin version编译不一致导致报错
compiled with an incompatible version of Kotlin.
The binary version of its metadata is 1.8.0, expected version is 1.6.0.细看英文提示就是说项目编译的过程中编译版本使用的kotlin version和期望的版本不一致导致无法编译通过。
那不就好办了吗解决方法大致有以下 1修改gradle版本使之使用的kotlin版本和期待的kotlin版本一致。 2升级依赖使之和编译的版本一致 3强制统一项目的kotlin版本 上述的几种方法各有优缺点。 对于1来说有些项目的gradle版本不是说升级就升级的对内项目中涉及到的一些sdk依赖配置文件声明有众多联系对外涉及到一些三方自动打包工具编译环境也会有众多关联因此升级会带来很多时间人力成本。而其优点则是更新了整体的编译环境速度质量可维护性都有所提高。 对于2来说升级依赖其影响主要是项目内。有些三方sdk由于设计存在的缺陷大版本升级往往会导致api废弃甚至遗失的情况因此也会耗费极多的人力成本。 对于3来说短期内就能快速地解决问题。但是要注意各个依赖关系中存在的版本偏差不过一般对于这种官方的版本维护性都是极高的所以版本跨度不大的情况下兼容性都是极好的。
本文将会以3方法解决冲突引起的问题。 通过整理错误的log归纳出一共有以下的冲突
kotlin-stdlib
annotation-jvm
androidx.annotation
kotlin-stdlib-jdk7
kotlin-stdlib-jdk8所以这里要强制指定上述依赖的版本即可。 首先通过点击gradle–app–help-dependencies即可看到项目的依赖然后得出统一的版本号即可。
依赖有可能很多所以建议复制下来对比着看。
而本次实战中是通过修改项目根build.gradle来实现版本的统一核心代码如下
/*强制统一版本号*/
subprojects {configurations.all {resolutionStrategy {force org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_versionforce org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_versionforce androidx.annotation:annotation:1.2.0force androidx.annotation:annotation-jvm:1.6.0force org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version}}
}上述代码的意思就是指定了kotlin相关的具体依赖的版本号实际要指定哪些依赖要看报错来做不能一概而论。
最后rebuild打release包成功则认为修改成功。
that’a all-------------------------------------------------------------------------------------