Подтвердить что ты не робот

Как включить Spongy Castle JAR в Android?

Очевидно, Spongy Castle является альтернативой Android использованию полной версии Bouncy Castle.

Однако при импорте jar я получаю всевозможные ошибки, которые "не могут быть решены", поскольку он опирается на пакеты, не включенные в Android, в первую очередь javax.mail, javax.activation и javax.awt.datatransfer.

Так как же лучше обойти это? Ответы на этот вопрос и этот указывают на то, что эти пакеты вообще не должны использоваться, а этот популярный вопрос даже не рассматривает возможность найти способ вернуть AWT обратно, Так как же Spongy Castle полагается на них? Люди используют Spongy Castle, верно?

4b9b3361

Ответ 1

Это два очень простых примера того, как включить Spongy Castle в проект:

Так как v1.47, Spongy Castle был разделен на отдельные суб-банки, которые точно отражают соответствующие артефакты Bouncy Castle (например, sc-light-jdk15on.jar, scpg-jdk15on.jar и т.д.), и важно обеспечить включение всех Spongy Для того, что вы делаете, нужны кувшины.

Полную информацию о зависимостях можно найти по адресу:

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

Как минимум вам понадобится sc-light-jdk15on.jar (базовая легкая реализация API) и, возможно, scprov-jdk15on.jar (scprov-jdk15on определенно не имеет какой-либо из этих странных зависимостей и успешно работает на Android.

(отказ от ответственности, я являюсь хранителем Spongy Castle, но у меня также было много отчетов об успехах от других пользователей!)

Ответ 2

Если вы используете 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);
}

Ответ 3

В то же время BouncyCastle можно использовать напрямую. В более поздних версиях Android внутреннее имя пакета BC изменилось, и, по крайней мере, коллизия имен пакетов больше не является проблемой, но все еще есть проблемы. Для решения посмотрите на это: fooobar.com/info/215506/...