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



显然海绵城堡是使用完整版弹性城堡的Android替代品。

然而,在导入jar时,我得到了各种"无法解决"的错误,因为它依赖于Android不包含的包,主要是javax。邮件、javax。激活,以及javax.awt. datattransfer .

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

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

这是如何在项目中包含海绵城堡的两个非常简单的例子:

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

自v1.47以来,海绵城堡已被分割成单独的子罐子,完全镜像匹配的弹性城堡文物(如sc-light-jdk15on.jar, scpg-jdk15on.jar等),重要的是要确保你包括所有海绵城堡罐需要你正在做什么。

关于依赖项的完整信息可以在:

http://rtyley.github.com/spongycastle/下载

至少需要sc-light-jdk15on.jar(基本的轻量级api实现),可能还需要scprov-jdk15on.jar(围绕轻量级api的JCE包装)。如果你使用Maven,那么所有这些依赖管理的东西都为你照顾好了。

你在javax.mail, javax.activation等上面描述的有问题的依赖,表明你可能选择了一个不正确的jar(例如,每个库组件一个,而不是"核心提供商"一个)——因为scprov-jdk15on jar绝对没有有任何这些奇怪的依赖,并且在Android上运行得很好。

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

同时BouncyCastle可以直接使用。在后来的Android版本中,内部BC包名称已经更改,至少包名称冲突不再是问题,但仍然存在问题。要获得解决方案,请查看以下内容:https://stackoverflow.com/a/57897224/3351474

相关内容

  • 没有找到相关文章

最新更新