@Parcelize 未解决,androidExtensions 实验模式设置为 true
@Parcelize not resolved with androidExtensions experimental mode set to true
切换到 Gradle Kotlin DSL Gradle 后无法解析 @Parcelize
注释或包 import kotlinx.android.parcel.Parcelize
("Unresolved reference" 错误)。稳定的 Kotlin 插件和最新的 Canary 插件会发生这种情况。在 Android Studio 中构建失败,在使用 Gradle Wrapper 时也在控制台中构建失败。
顶级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 到最高级别,但结果仍然相同。有人遇到过类似问题并设法解决了吗?
啊!我找到了 a working solution。在基于 Groovy 的 androidExtensions.gradle
中设置实验标志,然后 apply
在基于 Kotlin 的 build.gradle.kts
.
中设置该文件
我想把它传递给 toxxmeister。
以我为例。
只需交换 2 行代码 kotlin-android 和 kotlin-android-extensions 就可以了。
所以下面的序列是有效的:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
https://github.com/gradle/kotlin-dsl-samples/issues/644#issuecomment-482479624 -
正如对此 link、
的评论
androidExtensions { isExperimental = true }
当我将 Kotlin 版本升级到最新版本,即 1.3.60 时,对我来说工作正常,无需采取任何解决方法。
对于 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
您需要做的就是将以下插件添加到您的应用级别 gradle 文件
apply plugin: 'kotlin-parcelize'
PS:apply plugin: 'kotlin-android-extensions'
已弃用。
将此插件添加到您的 build.gradle(app) 文件中。
id 'kotlin-android-extensions'
切换到 Gradle Kotlin DSL Gradle 后无法解析 @Parcelize
注释或包 import kotlinx.android.parcel.Parcelize
("Unresolved reference" 错误)。稳定的 Kotlin 插件和最新的 Canary 插件会发生这种情况。在 Android Studio 中构建失败,在使用 Gradle Wrapper 时也在控制台中构建失败。
顶级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 到最高级别,但结果仍然相同。有人遇到过类似问题并设法解决了吗?
啊!我找到了 a working solution。在基于 Groovy 的 androidExtensions.gradle
中设置实验标志,然后 apply
在基于 Kotlin 的 build.gradle.kts
.
我想把它传递给 toxxmeister。
以我为例。 只需交换 2 行代码 kotlin-android 和 kotlin-android-extensions 就可以了。
所以下面的序列是有效的:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
https://github.com/gradle/kotlin-dsl-samples/issues/644#issuecomment-482479624 - 正如对此 link、
的评论androidExtensions { isExperimental = true }
当我将 Kotlin 版本升级到最新版本,即 1.3.60 时,对我来说工作正常,无需采取任何解决方法。
对于 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
您需要做的就是将以下插件添加到您的应用级别 gradle 文件
apply plugin: 'kotlin-parcelize'
PS:apply plugin: 'kotlin-android-extensions'
已弃用。
将此插件添加到您的 build.gradle(app) 文件中。
id 'kotlin-android-extensions'