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

abh*_*ank 61 android annotations parcelable kotlin

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

G00*_*0fY 119

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

如果使用Plugins 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'
}
Run Code Online (Sandbox Code Playgroud)

使用 kts 时,您可以编写 ->

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

// app build.gradle.kts
plugins {
    ..
    id("kotlin-parcelize")
}
Run Code Online (Sandbox Code Playgroud)

--- 或传统插件应用程序 ---

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

apply plugin: 'kotlin-android-extensions'
Run Code Online (Sandbox Code Playgroud)

有了这个 ->

apply plugin: 'kotlin-parcelize'
Run Code Online (Sandbox Code Playgroud)

第 2 步。从 android {} 中删除此代码

androidExtensions {
    experimental = true
}
Run Code Online (Sandbox Code Playgroud)

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

import kotlinx.android.parcel.Parcelize
Run Code Online (Sandbox Code Playgroud)

新进口

import kotlinx.parcelize.Parcelize
Run Code Online (Sandbox Code Playgroud)


A. *_*rik 27

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

plugins {
    ..
    id 'kotlin-parcelize'
}
Run Code Online (Sandbox Code Playgroud)

然后将旧的导入语句从

import kotlinx.android.parcel.Parcelize
Run Code Online (Sandbox Code Playgroud)

import kotlinx.parcelize.Parcelize
Run Code Online (Sandbox Code Playgroud)

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


Mar*_*rty 13

与 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"
}
Run Code Online (Sandbox Code Playgroud)

build.gradle(应用程序级别)

plugins {
    ...
    id 'kotlin-parcelize'
}
Run Code Online (Sandbox Code Playgroud)

和数据类

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

@Parcelize
class User(
    val firstName: String, 
    val lastName: String, 
    val age: Int
): Parcelable
Run Code Online (Sandbox Code Playgroud)

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


Sib*_*aza 6

  1. kotlin-android-extensions已弃用,因此请从kotlin-parcelize替换它
  2. 如果模型类使用了 @Parcelize 注解,那么你必须将其从 kotlinx.android.parcel.Parcelize的导入替换为 import kotlinx.parcelize.Parcelize