切换到Gradle后,Kotlin DSL Gradle无法解析@Parcelize
批注或程序包import kotlinx.android.parcel.Parcelize
(“未解析的引用”错误)。稳定的Kotlin插件和最新的Canary插件会发生这种情况。使用Gradle Wrapper时,无法在Android Studio中以及从控制台进行构建。
顶级build.gradle.kts
buildscript {
repositories {
google()
mavenCentral()
jcenter()
}
dependencies {
classpath("com.android.tools.build:gradle:3.2.1")
classpath(kotlin("gradle-plugin", version = "1.3.11"))
}
}
allprojects {
repositories {
google()
mavenCentral()
jcenter()
}
}
应用程序build.gradle.kts
import org.jetbrains.kotlin.config.KotlinCompilerVersion
plugins {
id("com.android.application")
kotlin("android")
kotlin("android.extensions")
}
android {
compileSdkVersion(28)
defaultConfig {
applicationId = "com.a.b.c"
minSdkVersion(15)
targetSdkVersion(28)
versionCode = 1
versionName = "1.0"
testInstrumentationRunner = "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
getByName("release") {
isMinifyEnabled = false
proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")
}
}
// experimental mode is enabled -> @Parcelize should be resolved
androidExtensions {
isExperimental = true
}
}
dependencies {
implementation(kotlin("stdlib-jdk7", KotlinCompilerVersion.VERSION))
... other dependencies ...
我尝试移动
androidExtensions {
isExperimental = true
}
从android到顶级,但结果仍然相同。任何人都有类似的问题并设法解决了吗?
答案 0 :(得分:2)
啊!我找到了a working solution。在基于Groovy的androidExtensions.gradle
中设置实验性标志,然后在基于Kotlin的apply
中build.gradle.kts
设置该文件。
我想通过,但功劳归于toxxmeister。
答案 1 :(得分:1)
您需要做的就是将以下插件添加到您的应用程序级别Gradle文件中
apply plugin: 'kotlin-parcelize'
PS:apply plugin: 'kotlin-android-extensions'
已过时。
答案 2 :(得分:0)
就我而言。 只需交换两行代码kotlin-android和kotlin-android-extensions即可。
所以下面的序列是可行的:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
答案 3 :(得分:0)
https://github.com/gradle/kotlin-dsl-samples/issues/644#issuecomment-482479624- 如对此链接的评论,
androidExtensions { isExperimental = true }
当我将Kotlin版本升级到最新版本(即1.3.60)时,对我来说工作正常,
答案 4 :(得分:0)
对于Kotlin KTS
此解决方案对我有用
androidExtensions {
configure(delegateClosureOf<AndroidExtensionsExtension> {
isExperimental = true
})
}
我的build.gradle.kts
文件
plugins {
id(Dependencies.androidApplication)
id(Dependencies.google)
id(Dependencies.kotlinAndroid)
id(Dependencies.kotlinAndroidExtensions)
id(Dependencies.kapt)
id(Dependencies.crashlytics)
}
androidExtensions{
configure(delegateClosureOf<org.jetbrains.kotlin.gradle.internal.AndroidExtensionsExtension> {
isExperimental = true
})
}
android {
......
}
了解更多详情 https://github.com/gradle/kotlin-dsl-samples/issues/644#issuecomment-398502551
答案 5 :(得分:0)
将此插件添加到您的 build.gradle(app) 文件中。
id 'kotlin-android-extensions'