如何在Android中包含Spongy Castle JAR?

显然Spongy城堡是使用完整版的Bouncy城​​堡的Android替代品。

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

那么围绕这个最好的方法是什么? 对这个问题的回应, 这表明这些软件包不应该被使用, 这个受欢迎的问题甚至没有考虑find一种方法来获取AWT。 那么Spongy Castle是如何依靠它们的呢? 人们正在使用海绵城堡 ,对吧?

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

  • github.com/rtyley/spongycastle-eclipse – Eclipse
  • github.com/rtyley/toy-android-ssh-agent – Maven

从v1.47开始,Spongy Castle被分割成独立的子瓶子,与Bouncy Castle相匹配的工件(例如sc-light-jdk15on.jarscpg-jdk15on.jar等) scpg-jdk15on.jar ,确保包含所有的Spongy城堡jar子都是你所要做的。

完整的依赖信息可以在以下urlfind:

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

至less需要sc-light-jdk15on.jar (基本的轻量级API实现),可能还需要scprov-jdk15on.jar (轻量级API的JCE包装器)。 如果你使用的是Maven,那么所有这些依赖pipe理的东西都会照顾你。

您在javax.mailjavax.activation等中描述的有问题的依赖关系表明您可能select了不正确的jar(例如,每个单一库组件,而不是“核心提供者”) – 作为scprov-jdk15on jar绝对没有任何那些怪异的依赖,并在Android上愉快地运行。

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

如果您正在使用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' } 

你可以在这里find最新版本的图书馆。

不要忘记将它作为安全提供程序插入到您的应用程序中。

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