首页 > 解决方案 > 无法在 Android aosp 中解析 org.bouncycastle.cms

问题描述

我正在尝试在 Android 源代码中添加自定义签名验证。我尝试使用 bouncycastle 库中的方法来完成工作。具体来说,我想使用 CMSSignedData 这是一种存储签名值和信息的数据结构来验证签名(例如公钥和算法)。org.bouncycastle.cms 包中的 CMSSignedData,所以我尝试将此包导入我要进行验证的 .java 文件中。但是我收到一个编译错误,说 org.bouncycastle 中的 cms 无法解析。

我检查了位于 ~/aosp/externel/bouncycastle 中的库 bouncycastle,发现有两个子目录:bcprov 和 bcpkix。CMSSignedData 驻留在 bcpkix 中。然后我阅读了这个目录中的 Android.mk,它似乎构建了两个模块:'bouncycastle' 用于 bcprov 下的源代码和 'bouncycastle-bcpkix' 用于 bcpkix。

模块 bouncycastle 从 makefile 中的 bcprov 生成

从 makefile 中的 bcpkix 生成的模块 bouncycastle-bcpkix

然后我检查了我打算修改的java的makefile。java文件的位置是~/aosp/frameworks/base/core/java/android/util/jar。Android.mk 的路径是~/aosp/frameworks/base。LOCAL_JAVA_LIBRARIES我看到它在and中添加了“bouncycastle” framework_docs_LOCAL_API_CHECK_JAVA_LIBRARIES。但在 makefile 中找不到“bouncycastle-bcpkix”。

所以我想问题是~/aosp/frameworks/base/Android.mk 只导入与“bcprov”相关的“bouncycastle”,而我打算使用的 cms 在另一个“bouncycastle-bcpkix”中。因此,我添加了 'bouncycastle-bcpkix',LOCAL_STATIC_JAVA_LIBRARIES因为它是由include $(BUILD_STATIC_JAVA_LIBRARY). 但是编译 aosp 时出现 ninja:dependency cycle 错误。描述的错误

有谁知道发生了什么?导入 org.bouncycastle.cms 的正确方法是什么?

标签: javaandroidmakefilebouncycastle

解决方案


推荐阅读