繁体   English   中英

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

[英]Gradle kotlin-dsl configuration not working, android extension function not recognized

我正在尝试使用 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再一次,只有失败和沮丧。 不知道为什么这永远行不通,总是让我保持旧的方式。 我做错了什么,为什么不起作用?

我遇到了与红色的 android 标签视图相同的事情。 我如何解决我的错误,我只是从 Build 选项重建项目。 (Build -> Rebuild Project) 并且我看到 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")
}

我也得到了同样的问题,升级后kotlin version1.3.211.3.71 ,改变它的com.android.tools.build:gradle version3.3.23.5.3

也许这会帮助您解决错误。

一步一步去

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

    包括 ':app' // 之前

    include(":app") // 之后

  3. 将 root -> build.gradle 重命名为 root -> build.gradle.kts 和在该文件中所做的相同更改

    构建脚本{

     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 和您在该文件中所做的相同更改

经过4个小时的浪费时间,我终于解决了这些问题。

  1. 在您的项目根文件夹中找到gradlew
  2. 右键单击它,然后在 -> terminal 中打开。
  3. 编写./gradlew tasks命令并输入。
  4. 如果在build.gradle文件中显示任何错误,请修复它并重新运行./gradlew tasks命令,直到解决所有错误并且您可以看到BUILD SUCCESSFUL
  5. 现在同步你的 gradle 文件。

同步完成后,所有扩展功能都会被android studio识别,红色标记会消失。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM