如何在Android中包含海绵城堡JAR?

显然,海绵城堡是使用完整版充气城堡的Android替代品。

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

那么解决这个问题的最好方法是什么呢?对这个问题的回答表明根本不应该使用这些软件包,这个流行的问题甚至没有考虑找到一种方法来恢复AWT。那么海绵城堡是如何依赖他们的呢?人们正在使用海绵城堡,对吧?


答案 1

如果您使用的是 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'

    }

您可以在此处找到该库的最新版本。

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

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

答案 2

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

从 v1.47 开始,海绵城堡被拆分成单独的子罐子,这些子罐子完全反映了匹配的充气城堡神器(例如 ,等),重要的是要确保包含您正在做的事情所需的所有海绵城堡罐子。sc-light-jdk15on.jarscpg-jdk15on.jar

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

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

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

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

(免责声明,我是海绵城堡的维护者,但我也从其他用户那里得到了很多成功报告!