如何在Android中加入Spongy Castle JAR?

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

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

那么最好的解决方法是什么? 回答这个问题并且这表明这些包不应该被使用, 这个流行的问题甚至没有考虑find一种方法来获得AWT。 那么Spongy Castle如何依赖它们呢? 人们正在使用Spongy Castle ,对吧?

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

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

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

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

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

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

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

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

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