Gradle Kotlin-dsl配置不起作用,无法识别android扩展功能

时间:2019-03-17 07:57:59

标签: android gradle gradle-kotlin-dsl

我正在尝试使用kotlin-dsl配置我的gradle设置。我的项目gradle看起来像这样:

buildscript {
    repositories {
        google()
        jcenter()
    }

dependencies {
        classpath("com.android.tools.build:gradle:3.3.2")
        classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.21")
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

和我的应用级gradle:

plugins {
    id("com.android.application")
    id("kotlin-android")
}

android {  // marked red

}

两个文件名均为build.gradle.kts。 Gradle版本是5.2.1。 我有一个问题,IDE无法识别app-gradle文件中的android {}部分,我无法配置诸如compileSdkVersion等之类的东西。我又一次尝试将项目迁移到kotlin-dsl再一次,只有失败和沮丧。不知道为什么这永远不会起作用,总是让我保持旧的方式。 我在做什么错,为什么那没用?

4 个答案:

答案 0 :(得分:1)

在将kotlin version1.3.21升级到1.3.71并将com.android.tools.build:gradle version3.3.2更改为3.5.3之后,我也遇到了同样的问题

也许这可以帮助您解决错误。

答案 1 :(得分:0)

我从未见过这样的代码:

plugins {
    id("com.android.application")
    id("kotlin-android")
}

尝试使用此代码:

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'

更新

我已成功使用如下所示的插件块运行应用程序。

plugins {
    id("com.android.application")
    kotlin("android")
    kotlin("kapt")
}

我发现使用kotlin-dsl的存储库:https://github.com/rt1shnik/Bandhook-Kotlin。也许会有所帮助。

答案 2 :(得分:0)

  

逐步进行

  1. 更新到Gradle Wrapper 5.0或更高版本
  2. 重命名root-> settings.gradle到root-> settings.gradle.kts并在文件中

    include':app'//之前

    include(“:app”)//之后

  3. 重命名root-> build.gradle到root-> build.gradle.kts,并执行与该文件相同的更改

    buildscript {

    repositories {
        jcenter()
        google()
    }
    dependencies {
        classpath("com.android.tools.build:gradle:3.3.1")
        classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.11")
    }
     }
    
    allprojects {
    repositories {
        jcenter()
        google()
    }
    }
    
    tasks {
    val clean by registering(Delete::class) {
        delete(buildDir)
    }
    }
    
  4. 将应用程序重命名为-> build.gradle到应用程序-> build.gradle.kts,并且与在该文件中所做的更改相同

答案 3 :(得分:0)

我面临着与Android标签视图相同的红色问题。 我如何解决错误,我只是从Build选项重建项目。 (生成->重建项目),我发现progruardFiles行不是按照指南,因为所有字符串都必须用双引号引起来。我将其替换为

proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")

此后,我再次重建项目,Gradle建议我在解决问题后单击“在您的项目中添加依赖项”。

这是我的模块级Gradle

plugins {
    id("com.android.application")
    kotlin("android")
    kotlin("android.extensions")
    kotlin("kapt")
}
android {
    compileSdkVersion(29)
    defaultConfig {
        applicationId = "com.example.app"
        minSdkVersion(21)
        targetSdkVersion(29)
        versionCode = 1
        versionName = "1.0"
        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
    buildTypes {
        getByName("release") {
            isMinifyEnabled = false
            proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")}
}
}

dependencies {
implementation(fileTree(mapOf("dir" to "libs", "include" tolistOf("*.jar"))))
implementation ("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.41")
implementation ("androidx.appcompat:appcompat:1.0.2")
implementation ("androidx.core:core-ktx:1.0.2")
implementation ("androidx.constraintlayout:constraintlayout:1.1.3")
testImplementation ("junit:junit:4.12")
androidTestImplementation ("androidx.test:runner:1.2.0")
androidTestImplementation ("androidx.test.espresso:espresso-core:3.2.0")
}