I am trying to use kotlin android extensions plugin Parcelize on Android platform.
I am on Kotlin 1.3.72.
I generated successfully a unitary dumb Rect.java without the plugin (by implementing parcelable methods manually) BUT this is kind of annoying to do it for lots of aidl objects especially since Kotlin has a code gen plugin to do it automatically for you.
I got the following error when using @Parcelize annotation:
error: class 'Rect' is not abstract and does not implement abstract member public abstract fun writeToParcel(dest: Parcel!, flags: Int): Unit defined in android.os.Parcelable
Can you told me where I am wrong?
Following class Rect with (working) and without (not working) annotation, and the Android.bp file:
import android.os.Parcel import android.os.Parcelable class Rect() : Parcelable { var left: Int = 0 var top: Int = 0 var right: Int = 0 var bottom: Int = 0 companion object CREATOR : Parcelable.Creator<Rect> { override fun createFromParcel(parcel: Parcel): Rect { return Rect(parcel) } override fun newArray(size: Int): Array<Rect> { return Array(size) { Rect() } } } private constructor(inParcel: Parcel) : this() { readFromParcel(inParcel) } override fun writeToParcel(outParcel: Parcel, flags: Int) { outParcel.writeInt(left) outParcel.writeInt(top) outParcel.writeInt(right) outParcel.writeInt(bottom) } private fun readFromParcel(inParcel: Parcel) { left = inParcel.readInt() top = inParcel.readInt() right = inParcel.readInt() bottom = inParcel.readInt() } override fun describeContents(): Int { return 0 } }
import kotlinx.android.parcel.Parcelize import android.os.Parcelable @Parcelize class Rect() : Parcelable { var left: Int = 0 var top: Int = 0 var right: Int = 0 var bottom: Int = 0 }
java_library { name: "my_module", srcs: ["src/main/java/**/*.java", "src/main/java/**/*.kt", "src/main/aidl/**/I*.aidl"], java_version: "1.8", aidl: { local_include_dirs: ["src/main/aidl"], }, static_libs: [ "kotlin-android-extensions" ], } java_import { name: "trove4j", jars: ["trove4j-1.0.20200330.jar"], host_supported: true, sdk_version: "current", } java_import { name: "kotlin-daemon-embeddable", jars: ["kotlin-daemon-embeddable-1.3.72.jar"], host_supported: true, sdk_version: "current", } java_import { name: "kotlin-script-runtime", jars: ["kotlin-script-runtime-1.3.72.jar"], host_supported: true, sdk_version: "current", } java_import { name: "kotlin-compiler-embeddable", jars: ["kotlin-compiler-embeddable-1.3.72.jar"], libs: ["kotlin-stdlib", "kotlin-reflect", "kotlin-script-runtime", "kotlin-daemon-embeddable", "trove4j"], host_supported: true, sdk_version: "current", } java_import { name: "kotlin-android-extensions", jars: ["kotlin-android-extensions-1.3.72.jar"], libs: ["kotlin-compiler-embeddable"], host_supported: true, sdk_version: "current", }