jenkins - Android10 平台:调用 Aidl 库 API 时出现 NoClassDefFoundError
问题描述
我们有一个名为X的类,它引用了来自类Y的aidl 库LibA。还有一个名为Z的类,我们在 Class Z中有一个 java sdkaidl 库LibB。
X类正在尝试从LibA testMethod(ObjectB)调用方法
ObjectB是来自LibB的 Parcelable 对象
从 Class X 调用 testMethod 时,我们面临 ObjectB 的 NoClassDefFoundError
如何在 Android 10 平台中解决此运行时问题。
我们正在使用 Android bp 文件约定在 Jenkins 平台中构建文件
X 类
安卓应用{
name: "ClassX",
srcs: [
"aidl/**/*.aidl",
"java/**/*.java",
],
libs: [ClassY.LibA],
required: []
}
Z 类 => LibB
java_sdk_library { name: "LibB",
manifest: "AndroidManifest.xml", srcs: [ "java/ /*.java", "aidl/ /*.aidl", ],aidl: { local_include_dirs: ["aidl"], },
api_packages: [ "LibB", ], compile_dex: true, }
ClassY => LibA
java_sdk_library {
name: "LibA",
manifest: "AndroidManifest.xml", srcs: [ "java/ /*.java", "aidl/ /I*.aidl", ],aidl: { local_include_dirs: ["aidl"] , include_dirs: ["LibB/src/main/aidl"], }, static_libs: ["androidx.annotation_annotation"], libs: ["LibB"], api_packages: ["LibA"], }
ClassY
android_app { name:" ClassY", srcs: ["aidl/ /*.aidl", "java/ /*.java"], libs: ["LibB", "LibA"], 必需: ["LibB"] }