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() } }
但愿对你有用,这种坑真难爬
发表评论