参考:【错误记录】Android Studio 中 Kotlin 版本报错 ( Module was compiled with an incompatible version of Kotlin. T )_51CTO博客_android studio运行kotlin
第一步,在project下的build.gradle中的repositories下添加(注意:buildscript和allprojects下都有repositories):
repositories {
jcenter()
google()
}
第二步,同样在project下的dependencies中添加下面这句(后面的版本需要按照对照表来,否则肯定出错,PS:kotlin版本尽量定高,我这里定了1.7.20,是因为调用的androidx.navigation.Navigation为1.6.0库,是kotlin的1.6.0,所以得定高,否则出错)而gradle版本最好也定高一点,我这里是4.1.0:
buildscript {
ext {
kotlin_version = '1.7.20'
}
repositories {
jcenter()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:4.1.0'
// 下面这两也要加进来
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.20'
classpath 'org.jetbrains.kotlin:kotlin-stdlib:1.7.20'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
还有注意这里的版本:
第三步,到需要kotlin插件功能的模块中,一般如果这不是模块化程序,就只有一个app模块,在app的build.gradle下的最顶部,添加下面这个(这个有两种写法):
第一种:
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-android-extensions'
//id 'kotlin-parcelize' // 注意这句,这是新版本推荐使用的,但是我实验发现用了这句
//以后会发生xml里面的id在activity直接使用会无法解析的问题。所以还是不要用这句
}
第二种:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
//apply plugin: 'kotlin-parcelize' // 注意这句,这是新版本推荐使用的,但是我实验发现用了
//这句以后会发生xml里面的id在activity直接使用会无法解析的问题。所以还是不要用这句
最后,同步一下就行了。如果同步不了,那可能就得翻墙了。(或者看我的另一篇文章新版AndroidStudio配置maven阿里云镜像-CSDN博客)
然后,补充一下,如果是模块化,组件化的程序,建议在最底层模块(也就是其他模块都会引用该模块)的顶部添加。那个project下的build.gradle中的就不用改,保持跟上面一样。(这是我猜的,不知道对不对。)
再补充一下,最新版,直接使用xml中id的简化写法又改了。这次推荐使用view binding写法,老是改来改去,烦死了。以下是具体写法:
基于模块化开发的思想,如果你想启用某个moudle的viewBing,你就可以在当前moudle的build.gradle下加入如下代码,现在我们没有其他模块,就一个app模块,所以就在app下的build.gradle(注意不是project的build.gradle)
plugins {
id 'com.android.application'
id 'kotlin-android'
// id 'kotlin-parcelize'
id 'kotlin-android-extensions'
}//这里不变,可以使用id 'kotlin-parcelize',也可以使用id 'kotlin-android-extensions'
android {
..........
viewBinding {
enabled = true //已过时,之前的写法
}
.........
}
上面是以前的写法,新的写法如下:
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-parcelize'
}//这里不变,可以使用id 'kotlin-parcelize',也可以使用id 'kotlin-android-extensions'
android {
...
buildFeatures {
viewBinding true//最新的写法
}
...
}
这样整个模块就可以使用viewBing的方式开发了,至于怎么使用,请看我的另一篇文章:Android中view binding的使用-CSDN博客
好文链接
发表评论