Конфигурация Gradle kotlin-dsl не работает, функция расширения Android не распознается - PullRequest
0 голосов
/ 17 марта 2019

Я пытаюсь настроить мои настройки gradle с помощью kotlin-dsl.Мой проект 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()
    }
}

и мой уровень приложения:

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

android {  // marked red

}

Оба имени файла - build.gradle.kts.Версия Gradle - 5.2.1.У меня проблема в том, что часть android {} в файле app-gradle не распознается IDE, я не могу настроить такие вещи, как compileSdkVersion и т. Д. Еще раз я пытаюсь перенести проект в kotlin-dslи еще раз, ничего, кроме неудачи и разочарования.Понятия не имею, почему это никогда не работает и всегда позволяет мне оставаться прежним.Что я делаю не так, почему это не работает?

Ответы [ 2 ]

0 голосов
/ 13 июля 2019

Я столкнулся с тем же, что и вид тега 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")
}
0 голосов
/ 18 марта 2019

Перейти к пошаговой инструкции

  1. Обновление до Gradle Wrapper 5.0 или выше
  2. Переименовать root -> settings.gradle в root -> settings.gradle.kts и в файл

    include ': app' // before

    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 to app -> build.gradle.kts и те же изменения, что и в этом файле

...