既然 kotlin-android-extensions 已被弃用,如何使用 @Parcelize?

How to use @Parcelize now that kotlin-android-extensions is being deprecated?

如何用不是来自 kotlin-android-extensions 插件的 Parcelize 替换 package kotlinx.android.parcel 中的 annotation class Parcelize

首先,您需要将 kotlin-parcelize 插件添加到您的模块。

plugins {
    ..
    id 'kotlin-parcelize'
}

然后将您的旧导入语句从

更改为
import kotlinx.android.parcel.Parcelize

import kotlinx.parcelize.Parcelize

编辑(来源):https://proandroiddev.com/migrating-the-deprecated-kotlin-android-extensions-compiler-plugin-to-viewbinding-d234c691dec7

这应该是新插件:https://plugins.gradle.org/plugin/org.jetbrains.kotlin.plugin.parcelize

如果使用 插件 DSL,您可以在子模块中使用插件 ID。确保最新的 Kotlin Android 插件可从项目的类路径中获得。

// project build.gradle
plugins {
    ..
    id "org.jetbrains.kotlin.android" version "1.4.20" apply false
}

// app build.gradle
plugins {
    ..
    id 'kotlin-parcelize'
}

使用kts时可以这样写->

// project build.gradle.kts
plugins {
    ..
    kotlin("android") version "1.4.20" apply false
}

// app build.gradle.kts
plugins {
    ..
    id("kotlin-parcelize")
}

--- 或遗留插件应用程序 ---

步骤 1。更新到最新的 kotlin 版本 - 1.4.20 并替换

<s>apply plugin: 'kotlin-android-extensions'</s>

用这个 ->

apply plugin: 'kotlin-parcelize'

步骤 2。从 android {}

中删除此代码
<s>androidExtensions {
    experimental = true
}
</s>

步骤 3。最后,替换旧的 import ->

<s>import kotlinx.android.parcel.Parcelize
</s>

新导入

import kotlinx.parcelize.Parcelize

和Groovy

build.gradle(项目级别)

dependencies {
    // .... project level dependencies
    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files

    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.20-RC"
}

build.gradle(应用级别)

plugins {
    ...
    id 'kotlin-parcelize'
}

和数据class

import android.os.Parcelable
import kotlinx.parcelize.Parcelize

@Parcelize
class User(
    val firstName: String, 
    val lastName: String, 
    val age: Int
): Parcelable

你可以在这里找到最新版本https://plugins.gradle.org/plugin/org.jetbrains.kotlin.plugin.parcelize

只需更新您的导入

来自:import kotlinx.android.parcel.Parcelize

至:import kotlinx.parcelize.Parcelize

  1. kotlin-android-extensions 已弃用,因此请将其替换为 kotlin-parcelize
  2. 如果有用于模型 类 的 @Parcelize 注释,那么您必须将其从 kotlinx.android.parcel.Parcelize 的导入替换为导入 kotlinx.parcelize.Parcelize