annotation.kotlin_module Module was compiled with an incompatible version of Kotlin. The binary ver

2023-05-17 20:20:47  阅读 2932 次 评论 0 条

android编译报错

transformed/jetified-annotation-jvm-1.6.0.jar!/META-INF/annotation.kotlin_module: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.8.0, expected version is 1.4.0.

原因是依赖的库使用了kotlin1.8.0编译,你的库没使用1.8.0 ?抱歉,还有可能是你库里依赖的库使用了1.8.0……

比如,我的库里依赖了 androidx.annotation:annotation:1.6.0,它,好像就是1.8编译的(个人认为,未深究)

可在AndroidStudio命令行里输入以下命令打印出所有依赖树

./gradlew app:dependencies


|    +--- project :module:unit

|    |    +--- androidx.databinding:databinding-common:4.1.3

|    |    +--- androidx.databinding:databinding-runtime:4.1.3 (*)

|    |    +--- androidx.databinding:databinding-adapters:4.1.3 (*)

|    |    +--- org.jetbrains.kotlin:kotlin-stdlib:1.4.10 -> 1.8.0 (*)

其中 1.4.10 -> 1.8.0的意思是,版本冲突,编译器将自动使用1.8.0,即使你在build.gralde里指定 1.4.10也不行。

解决方法:强制指定版本

在项目根目录的build.gradle 加上以下代码

subprojects {
    configurations.all {
        resolutionStrategy {
            force "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.10"

            eachDependency { details ->
                if (details.requested.group == 'org.jetbrains.kotlin' && details.requested.name == 'kotlin-stdlib') {
                    details.useVersion '1.4.10'
                }
            }
        }
    }
}

里面有个force 和下面的eachDependency 我是分两次写上的,各位根据自己项目不同按需修改

可能有人会“根目录的build.gradle”到底是哪个,呢,一般里面写这些玩意的文件就是。上方代码直接写在最外层即可。

allprojects {
    repositories {
        mavenLocal()
        mavenCentral()
    }
}

但愿对你有用,这种坑真难爬

本文地址:http://www.bloguan.com/?id=605
版权声明:本文为原创文章,版权归 博观网 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

还没有留言,还不快点抢沙发?