参考:【错误记录】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博客

好文链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: