我想在一个多平台项目中创建一个类,并在 Android 版本中使用Parcelize
它。Parcelable
所以在我的lib-common
项目中,我尝试了:
expect annotation class Parcelize()
expect interface Parcelable
@Parcelize
data class Foo(x: Int): Parcelable
在我的lib-android
项目中:
actual typealias Parcelize = kotlinx.android.parcel.Parcelize
actual typealias Parcelable = android.os.Parcelable
第一个问题是 Gradle 插件kotlin-android-extensions
好像没有接受lib-android
's build.gradle
,所以kotlinx.android.parcel
找不到包。我设法通过直接导入库来解决这个问题:
implementation "org.jetbrains.kotlin:kotlin-android-extensions-runtime:$kotlin_version"
有了这个,编译的actual
定义。Parcelable
但是,我从 的定义中得到一个错误Foo
,好像它没有正确注释@Parcelize
:
类
Foo
不是抽象的,也没有实现public abstract fun writeToParcel(p0: Parcel!, p1: Int): Unit
定义的抽象成员android.os.Parcelable