2011-08-01 84 views
25

显然Spongy Castle是使用完整版Bouncy Castle的Android替代品。如何在Android中包含Spongy Castle JAR?

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

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

回答

31

这是两个非常简单的如何将海绵岛城某工程实例:

由于v1.47,海绵城堡一直拆分成单独的子瓶子,其精确地反映了匹配的Bouncy Castle工件(例如sc-light-jdk15on.jar,scpg-jdk15on.jar等),并且重要的是确保您包括全部 Spongy城堡罐子需要你在做什么。

依存关系的全部信息,可以发现在:

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

您至少将需要sc-light-jdk15on.jar(基地轻质-API实现),并可能scprov-jdk15on.jar(在JCE周围的轻量级的API包装)。如果你使用Maven,那么所有这些依赖管理的东西都会为你照顾。

javax.mailjavax.activation等描述该问题的相关性,表明你可能选择了不正确的罐子(如每单库组件之一,而不是“核心供应商”之一) - 为scprov-jdk15on罐肯定有任何这些怪异的依赖,并在Android上愉快地运行。

(声明,我是海绵城堡的维护者,但我已经有足够的其他用户成功应用的报告呢!)

+0

事情是,我相信这是我正在使用的确切JAR文件。我去了https://github.com/rtyley/spongycastle并点击下载子标题下的“你可以直接在这里下载最新的jar”链接。不幸的是,我不再在这个项目上工作了,所以我很可能不会再有机会再次尝试 - 但为了其他人的利益,将您的JAR文件包含在Android项目中的建议步骤是什么? –

+0

我添加了你的lib,但是它仍然抛出bouncycastle.ans1类没有找到的异常类加载。如何使它在海绵城堡中搜索? –

+0

如何从此链接添加lib https://github.com/rtyley/spongycastle ..没有jar文件... –

32

如果使用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); 
} 
+6

哪里可以添加安全提供程序行?在自定义应用程序类中? – AndyRoid

+0

是的,我们已经在我们的自定义类中添加了这个。无论何时该类实例被引用,提供者get都被插入。 确保您要插入的类是您的加密操作的入口点。 – ua741

+1

就我而言,我已将静态块放入我的自定义应用程序类中,发生了噩梦。该应用始终抱怨无效的SSL证书并弹出不可信的连接对话框。我将静态块移至Crypto utils类,问题得到解决。 –