如何在Android中加入Spongy Castle JAR?

时间:2011-08-01 13:04:49

标签: java android packages bouncycastle spongycastle

显然Spongy Castle是使用完整版Bouncy Castle的Android替代方案。

然而,在导入jar时我遇到了各种“无法解决”的错误,因为它依赖于Android不包含的软件包,主要是javax.mail,javax.activation和javax.awt.datatransfer。

那么最好的解决方法是什么?对this questionthis的回复表明根本不应该使用这些包,this popular question甚至不会考虑找回AWT的方法。那么Spongy Castle如何依赖它们呢? People are using Spongy Castle,对吧?

3 个答案:

答案 0 :(得分:39)

如果您使用的是gradle,那么您可以在build.gradle文件中指定依赖项,如下所示:

dependencies {
     ....
    compile 'com.madgag.spongycastle:core:1.54.0.0'
    compile 'com.madgag.spongycastle:prov:1.54.0.0'
    compile 'com.madgag.spongycastle:pkix:1.54.0.0'
    compile 'com.madgag.spongycastle:pg:1.54.0.0'

    }

您可以找到最新版本的库here

请勿忘记在应用中将其作为安全提供程序插入。

    static {
    Security.insertProviderAt(new org.spongycastle.jce.provider.BouncyCastleProvider(), 1);
}

答案 1 :(得分:32)

这是两个非常简单的示例,说明如何在项目中包含Spongy Castle:

从v1.47开始,Spongy Castle被拆分为独立的子罐子,完全反映了匹配的Bouncy Castle文物(例如sc-light-jdk15on.jarscpg-jdk15on.jar等),确保你很重要包括所有您正在做的所需的Spongy Castle罐子。

有关依赖关系的完整信息,请访问:

http://rtyley.github.com/spongycastle/#downloads

至少你需要sc-light-jdk15on.jar(基本轻量级API实现),可能需要scprov-jdk15on.jar(轻量级API的JCE包装器)。如果你正在使用Maven,那么所有这些依赖管理的东西都会由你来处理。

您在javax.mailjavax.activation等上描述的有问题的依赖关系表明您可能选择了一个不正确的jar(例如,每个单库组件,而不是'核心提供者) 'one) - 因为scprov-jdk15on jar肯定没有拥有任何奇怪的依赖关系,并且在Android上运行愉快。

(免责声明,我是Spongy Castle的维护者,但我也有很多来自其他用户的成功报告!)

答案 2 :(得分:0)

与此同时,可以直接使用BouncyCastle。在更高的Android版本中,内部BC软件包名称已更改,并且至少软件包名称冲突不再是问题,但仍然存在问题。有关解决方案,请查看以下内容:https://stackoverflow.com/a/57897224/3351474