You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android平台Android.bp下使用Kotlin @Parcelize实现AIDL Parcelable报错如何解决

问题原因与修复方案

1. 编译配置未开启Parcelize代码生成能力

你当前只引入了kotlin-android-extensions的依赖,但Android.bp中没有给Kotlin编译器传递开启Parcelize功能的参数,编译器不会自动生成Parcelable接口的相关实现方法,因此会抛出类未实现抽象方法的报错。
需要在你的my_module对应的java_library配置块中新增kotlincflags字段,添加相关开启参数:

java_library {
    name: "my_module",
    srcs: ["src/main/java/**/*.java", "src/main/java/**/*.kt", "src/main/aidl/**/I*.aidl"],
    java_version: "1.8",
    // 新增Kotlin编译器参数
    kotlincflags: [
        "-P", "android.extensions=true",
        "-P", "android.extensions.parcelize=true",
        // 适配1.3.72版本的实验性注解要求
        "-Xuse-experimental=kotlinx.android.parcel.Parcelize",
    ],
    aidl: {
        local_include_dirs: ["src/main/aidl"],
    },
    static_libs: [
        "kotlin-android-extensions"
    ],
}

2. 类属性定义不符合Parcelize的序列化规则

Kotlin 1.3.72版本的Parcelize默认仅序列化主构造函数中声明的属性,你当前的四个属性都定义在类体内,可能导致生成的实现逻辑异常。建议调整类的写法,将属性放在主构造中声明:

import kotlinx.android.parcel.Parcelize
import android.os.Parcelable

@Parcelize
data class Rect(
    var left: Int = 0,
    var top: Int = 0,
    var right: Int = 0,
    var bottom: Int = 0
) : Parcelable

修改完成后重新编译即可解决报错,编译器会自动生成所有Parcelable接口要求的实现方法,不需要手动编写。


内容的提问来源于stack exchange,提问作者Sebastien Delaherche

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 13:27:00