[英]gradle kotlin-dsl move android {} into subproject {} in root project build.gradle.kts
[英]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 version
从1.3.21
到1.3.71
,改变它的com.android.tools.build:gradle version
从3.3.2
至3.5.3
也许这会帮助您解决错误。
一步一步去
将 root -> settings.gradle 重命名为 root -> settings.gradle.kts 并在文件中
包括 ':app' // 之前
include(":app") // 之后
将 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) } }
同样重命名应用程序-> build.gradle 到应用程序-> build.gradle.kts 和您在该文件中所做的相同更改
经过4个小时的浪费时间,我终于解决了这些问题。
gradlew
。./gradlew tasks
命令并输入。build.gradle
文件中显示任何错误,请修复它并重新运行./gradlew tasks
命令,直到解决所有错误并且您可以看到BUILD SUCCESSFUL 。同步完成后,所有扩展功能都会被android studio识别,红色标记会消失。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.