How to use @Parcelize now that kotlin-android-extensions is being deprecated?
This should be the new plugin: https://plugins.gradle.org/plugin/org.jetbrains.kotlin.plugin.parcelize
If using Plugins DSL you can use the plugin ID in submodules. Make sure that the latest Kotlin Android plugin is available from the project's classpath.
// project build.gradleplugins { .. id "org.jetbrains.kotlin.android" version "1.4.20" apply false}// app build.gradleplugins { .. id 'kotlin-parcelize'}
When using kts you can write ->
// project build.gradle.ktsplugins { .. kotlin("android") version "1.4.20" apply false}// app build.gradle.ktsplugins { .. id("kotlin-parcelize")}
--- OR Legacy Plugin Application ---
Step 1. Update to latest kotlin version - 1.4.20
and replace
apply plugin: 'kotlin-android-extensions'
with this ->
apply plugin: 'kotlin-parcelize'
Step 2. Remove this code from the android {}
androidExtensions { experimental = true}
Step 3. Finally, replace old import ->
import kotlinx.android.parcel.Parcelize
with new import
import kotlinx.parcelize.Parcelize
First you will need to add kotlin-parcelize
plugin to your module.
plugins { .. id 'kotlin-parcelize'}
Then change your old import statement from
import kotlinx.android.parcel.Parcelize
to
import kotlinx.parcelize.Parcelize
Edit (source): https://proandroiddev.com/migrating-the-deprecated-kotlin-android-extensions-compiler-plugin-to-viewbinding-d234c691dec7
With Groovy
build.gradle
(project level)
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
(app level)
plugins { ... id 'kotlin-parcelize'}
and the data class
import android.os.Parcelableimport kotlinx.parcelize.Parcelize@Parcelizeclass User(val firstName: String, val lastName: String, val age: Int): Parcelable
you can find the latest version here https://plugins.gradle.org/plugin/org.jetbrains.kotlin.plugin.parcelize