Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Expand
titleОглавление...

Table of Contents

Общая информация

Эта статья описывает интеграцию устройств Рутокен в мобильные приложения для платформы Android с использованием приложения "Панель управления Рутокен".

Начало встраивания в клиентские приложения

Существует несколько вариантов встраивания Рутокенов в клиентские Android-приложения.

Если вы используете систему сборки Gradle, то добавьте следующие строки в файл build.gradle:

Code Block
languagetext
android {
    defaultConfig {
        ndk {
            abiFilters "armeabi-v7a", "arm64-v8a"
        }
    }
}
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
} 

Если ваше приложение будет работать с Рутокенами через PKCS#11, то:

  1. Добавьте в проект библиотекуиз Рутокен SDK. Библиотека находится в папке <sdk>/mobile/android/pkcs11.
    Положите библиотеку librtpkcs11ecp.so в папки <project_root>/app/src/main/jniLibs/armeabi-v7a и <project_root>/app/src/main/jniLibs/arm64-v8a для соответствующих архитектур.

  2. Добавьте в проект модуль-обертку PKSC#11 для Java: ru.rutoken:pkcs11jna:<version>@jar, где <Version> — версия библиотеки.
    Актуальную версии библиотеки можно посмотреть здесь.
    Также вам понадобится зависимость: net.java.dev.jna:jna:<Version>@aar.
    Её актуальную версию можно посмотреть здесь.

    Code Block
    titleПример добавленных зависимостей (для Gradle)
    dependencies {
        implementation 'ru.rutoken:pkcs11jna:3.3.0@jar'
        implementation 'net.java.dev.jna:jna:5.11.0@aar'
    }

Anchor
android12
android12
Status
colourGreen
titleРЕКОМЕНДУЕТСЯ
 
Встраивание с использованием rtpcsc.aar

Note

Необходимая функциональность поддерживается начиная с версии Панели управления Рутокен 1.10.0 и новее, а также librtpkcs11ecp.so 2.4.2.0 и новее 

Данный вариант встраивания совместим со всеми версиями Android, начиная с 5.0, и со всеми версиями targetSdk вашего приложения, начиная с 21.

Warning
titleВАЖНЫЕ ОТЛИЧИЯ

1. Ваше бизнес-приложение зависит только от библиотек rtpcsc.aar и, по необходимости от librtpkcs11ecp.so. Библиотека rtpcsc.aar заменяет rtserviceconnection.aar, а также содержит в себе librtpcsc.so для архитектур armv7 и arm64. 

2. Потребуется обязательный вызов Java метода RtPcsc.setAppContext(context) из модуля rtpcsc-<Version>.aar и передать в него Android контекст вашего приложения до начала работы с устройствами Рутокен.
Наиболее подходящим местом для данного вызова будет метод 
Application::onCreate. Без этого вызова работа с Рутокенами будет невозможна. Пример такого вызова можно увидеть в проекте Рутокен Демосмена.

3. Если приложение многопроцессное, то этот метод нужно вызвать в каждом процессе, где будет работа с устройствами Рутокен. Иначе в рамках процесса не получится работать с токенами или смарт-картами. 

4. Нельзя работать с библиотекой PKCS#11 из главного потока приложения. 

  1. Установите последнюю версию (1.10.0 или новее) Панели управления Рутокен из Google Play.
  2. Добавьте в проект AAR модуль из Рутокен SDK: rtpcsc-<Version>.aar, где <Version> — версия библиотеки.
    Модуль находится в папке 
    <sdk>/mobile/android/pcsc. Положите rtpcsc-<Version>.aar в папку <project_root>/app/libs.
  3. Пересоберите приложение.

Встраивание с использованием rtserviceconnection.aar

Note

Данный вариант встраивания совместим со всеми версиями Android, начиная с 5.0

Необходимая функциональность поддерживается начиная с Панели управления Рутокен (Google Play, RuStore) версии 1.2.6.

  1. Установите Панель управления Рутокен версии 1.2.6 или новее из Google Play.
  2. Добавьте в проект библиотеку из Рутокен SDK. Библиотека находится в папке <sdk>/mobile/android/pcsc. Положите библиотеку librtpcsc.so в папки <project_root>/app/src/main/jniLibs/armeabi-v7a и <project_root>/app/src/main/jniLibs/arm64-v8a для соответствующих архитектур.
  3. Добавьте в проект AAR модуль из Рутокен SDK: rtserviceconnection-<Version>.aar, где <Version>— версия библиотеки.
    Модуль находится в папке
    <sdk>/mobile/android/libs.
    Положите
    rtserviceconnection-<Version>.aarв папку <project_root>/app/libs.
  4. Пересоберите приложение.

Встраивание без дополнительного AAR модуля

Note

Данный вариант встраивания совместим только с версиями Android, начиная с 5.0 и заканчивая 8.1; версия targetSdk вашего приложения не должна превышать 27

 Данная схема работает с librtpcsc.so из SDK версии 040522 и ниже.

  1. Установите Панель управления Рутокен (Google Play, RuStore) .
  2. Добавьте в проект библиотеку из Рутокен SDK
    Библиотека находится в папке
    <sdk>/mobile/android/pcsc.
    Положите библиотеку
    librtpcsc.so в папки <project_root>/app/src/main/jniLibs/armeabi-v7a и <project_root>/app/src/main/jniLibs/arm64-v8a для соответствующих архитектур.
  3. Пересоберите приложение.

Чтобы ваши приложения смогли работать с Рутокенами, в том числе в Android 9:

  1.  Установите последнюю версию (1.2.6 или новее) Панели управления Рутокен из Google Play;
    Добавите себе в проект последние библиотеки librtpkcs11ecp.so и librtpcsc.so из Рутокен SDK
    Библиотеки находятся в папках <sdk>\mobile\android\pkcs11\ и <sdk>\mobile\android\pcsc\.
    Скорее всего библиотеки librtpkcs11ecp.so и librtpcsc.so в вашем проекте находятся в папках <project_root>\app\src\main\jniLibs\armeabi-v7a\ и <project_root>\app\src\main\jniLibs\arme64-v8a\;
    Убедитесь, что у вас последняя версия модуля-обертки PKSC#11 для Java – pkcs11jna<Version>.jar, где<Version>— версия библиотеки.
    Модуль находится по пути <sdk>\java\samples\lib\ в Рутокен SDK.
    Положите pkcs11jna<Version>.jar в папку <project_root>\app\libs\;
    Добавите себе в проект Android Archive Library(AAR) модуль из Рутокен SDKrtserviceconnection<Version>.aar , где<Version>— версия библиотеки.
    Модуль находится по пути <sdk>\mobile\android\libs\ в Рутокен SDK.
    Положите rtserviceconnection<Version>.aar в папку <project_root>\app\libs\;

    Пересоберите приложение.
    Если вы используете систему-сборки Gradle, то добавьте следующие строки в файл build.gradle

    Code Block
    languagetext
    android { defaultConfig { minSdkVersion 21 ndk { abiFilters "armeabi-v7a", "arm64-v8a" } } … dependencies { implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar']) }