gpt4 book ai didi

android - @Parcelize 在多平台项目中

转载 作者:IT老高 更新时间:2023-10-28 13:31:49 24 4
gpt4 key购买 nike

我想在多平台项目中创建一个类,在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-androidbuild.gradle,所以找不到包 kotlinx.android.parcel。我设法通过直接导入库来解决这个问题:

implementation "org.jetbrains.kotlin:kotlin-android-extensions-runtime:$kotlin_version"

这样,Parcelableactual 定义就可以编译了。

但是,我从 Foo 的定义中得到一个错误,好像它没有正确地用 @Parcelize 注释:

Class Foo is not abstract and does not implement abstract member public abstract fun writeToParcel(p0: Parcel!, p1: Int): Unit defined in android.os.Parcelable

最佳答案

这有点尴尬,但我发现问题只是因为我忘记打开 kotlin-android-extensions 的实验功能,其中之一是 @打包...

所以要让它工作,保持我的 expectedactual 定义就足够了 ParcelableParcelize 如问题所示,编辑 lib-androidbuild.gradle 并添加以下行:

apply plugin: 'kotlin-android-extensions'
androidExtensions {
experimental = true
}

不需要依赖添加;那是一个死胡同。

关于android - @Parcelize 在多平台项目中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51335555/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com