Встраивание КриптоПро Ключ SDK в мобильное приложение (Android)
Руководство по встраиванию содержит перечень действий, необходимых для встраивания КриптоПро Ключ SDK в собственное мобильное приложение.
Инструкция предназначена для разработчиков мобильных приложений для Android версии 7 и новее. Требуется уровень Android API 24 и выше (minSdkVersion 24, targetSdkVersion 34).
Добавление необходимых файлов в проект
Перейдите в каталог необходимого модуля (уровень приложения). Создайте папку libs. Скопируйте в папку libs файлы:
- SharedLibrary.aar
- csp-gui.aar
- JInitCSP.aar
- dssclient-1.1.XXXX-release.aar
В разделе dependencies файла build.gradle добавьте:
implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
В разделе android packagingOptions файла build.gradle добавьте следующее:
packagingOptions {
exclude 'META-INF/Digest.CP'
exclude 'META-INF/Sign.CP'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/LICENSE.txt'
doNotStrip "*/arm64-v8a/*.so"
doNotStrip "*/armeabi-v7a/*.so"
doNotStrip "*/x86_64/*.so"
doNotStrip "*/x86/*.so"
jniLibs {
useLegacyPackaging true
}
}
Добавьте следующие зависимости, которые используются в КриптоПро Ключ SDK:
/**
* Базовые библиотеки и библиотеки для UI
*/
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.6.1'
implementation 'androidx.webkit:webkit:1.5.0'
/**
* Библиотеки для работы с Rest Api
*/
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.okhttp3:logging-interceptor:4.8.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.squareup.retrofit2:converter-scalars:2.9.0'
/**
* Библиотеки для сериализации/десериализации в/из JSON
*/
implementation 'com.fasterxml.jackson.core:jackson-databind:2.12.2'
implementation 'com.google.code.gson:gson:2.8.6'
/**
* Библиотека для работы с преобразованиями
*/
implementation 'com.google.guava:guava:30.1-jre'
/**
* Библиотека для работы с QR
*/
implementation 'com.google.mlkit:barcode-scanning:17.2.0'
def camerax_version = "1.2.3"
implementation "androidx.camera:camera-core:${camerax_version}"
implementation "androidx.camera:camera-camera2:${camerax_version}"
implementation "androidx.camera:camera-lifecycle:${camerax_version}"
implementation "androidx.camera:camera-view:${camerax_version}"
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
implementation 'androidx.lifecycle:lifecycle-common-java8:2.4.1'
implementation 'androidx.biometric:biometric:1.1.0'
/**
* Библиотека для работы с pdf файлами
*/
implementation 'com.tom-roush:pdfbox-android:1.8.10.3'
/**
* Библиотека для отображения изображения, которое можно скейлить и скроллить
*/
implementation 'com.jsibbold:zoomage:1.3.1'
/**
* Root
*/
implementation 'com.github.scottyab:rootbeer:0.1.0'
Поддержка Рутокен NFC
Для встраивания Рутокен NFC необходимо добавить в зависимости библиотеку rtpcscbridge:
implementation 'ru.rutoken.rtpcscbridge:rtpcscbridge:1.0.0'
Настройка манифеста приложения
Откройте манифест проекта AndroidManifest.xml. В манифесте в application добавить свойство extractNativeLibs=true:
<application
...
android:extractNativeLibs="true">
...
</application>
Настройка правил минимизации и обфускации
Если в проекте используются инструменты минификации и обфускации proguard или D8, то для корректной работы библиотеки в файл правил proguard (например, proguard-rules.pro) необходимо добавить следующие ограничения:
-keep public class com.digt.sdk.** { *; }
-dontwarn com.digt.sdk.**
-keep public class ru.CryptoPro.** { *; }
-dontwarn ru.CryptoPro.**
-keep public class ru.cprocsp.** { *; }
-dontwarn ru.cprocsp.**
-keep public class org.ini4j.spi.** { *; }
-dontwarn org.ini4j.spi.**
При отсутствии файла proguard-rules.pro в проекте его необходимо создать и добавить в конфигурацию конечной сборки в файле build.gradle:
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
proguardFiles fileTree('proguard').asList().toArray()
}
debug {
minifyEnabled false
debuggable true
}
}
Настройка файлового провайдера
UI SDK предоставляет возможность скачать подписываемые (обрабатываемые) документы.
- Добавьте файл
file_provider_name.xml
в ресурсы вашего приложения res/xml. - Укажите в файле file_provider_name.xml идентификатор файлового провайдера - например your_bundle_id.fileprovider.
Настройка корневых сертификатов
Для выполнения защищенных сетевых запросов SDK требуется корневой сертификат, до которого строится цепочка проверки TLS-сертификата сервера. Корневой сертификат должен размещаться в ресурсах приложения.
В ресурсы приложения добавьте файл certs.json
. Формат содержимого файла:
{
"version":1,
"root": [
"MIIERDCCA/GgAwIBAgIQQ ... UJYu+Pih2ROUYAYQjPIw==",
...
"MIIFUTCCBP6gAwIBAgIRA ... fYGtCrq1l5FsXZOI5c/2S"],
"intermediate":[]
}