首页 > 解决方案 > 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"] }

标签: jenkinslinkerruntimeexceptionandroid-10.0aidl

解决方案


推荐阅读