29

どうやらSpongyCastleは、BouncyCastleのフルバージョンを使用する代わりのAndroidの代替手段です。

ただし、jarをインポートすると、Androidに含まれていないパッケージ、主にjavax.mail、javax.activation、javax.awt.datatransferに依存しているため、あらゆる種類の「解決できません」エラーが発生します。

では、これを回避する最善の方法は何ですか?この質問への回答とこれは、これらのパッケージをまったく使用すべきではないことを示しており、この人気のある質問は、AWTを取り戻す方法を見つけることさえ考慮していません。では、スポンジ城はどのようにそれらに依存していますか?スポンジキャッスルを使っているんですよね?

4

3 に答える 3

44

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);
}
于 2015-04-22T03:38:45.510 に答える
33

これらは、プロジェクトにSpongyCastleを含める方法の2つの非常に簡単な例です。

sc-light-jdk15on.jarv1.47以降、Spongy Castleは、一致するBouncy Castleアーティファクト(たとえば、scpg-jdk15on.jarなど)を正確に反映する個別のサブjarに分割されました。また、実行していることに必要なすべてのSpongyCastlejarを含めることが重要です。 。

依存関係に関する完全な情報は、次の場所にあります。

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

少なくとも、sc-light-jdk15on.jar(基本のlightweight-API実装)とおそらくscprov-jdk15on.jar(lightweight-APIのJCEラッパー)が必要になります。Mavenを使用している場合は、この依存関係管理のすべてが自動的に処理されます。

javax.mail、などで説明する問題のある依存関係はjavax.activation、間違ったjarを選択した可能性があることを示しています(たとえば、「コアプロバイダー」のものではなくevery-single-library-componentのもの)scprov-jdk15on-jarには間違いなく何もありませんそれらの奇妙な依存関係の中で、Android上で問題なく実行されます。

(免責事項、私はSpongy Castleのメンテナーですが、他のユーザーからも多くの成功報告があります!)

于 2011-08-18T18:27:46.900 に答える
0

その間、BouncyCastleは直接使用できます。それ以降のAndroidバージョンでは、内部BCパッケージ名が変更され、少なくともパッケージ名の衝突は問題ではなくなりましたが、まだ問題があります。解決策については、これを見てください:https ://stackoverflow.com/a/57897224/3351474

于 2019-09-24T16:33:44.217 に答える