Трудности с выпуском Android Open Mobile API
Я использую файл "org.simalliance.openmobileapi.jar" из SDK. Я скопировал его в папку libs и добавил зависимость следующим образом
Случай № 1: работает нормально (в режиме отладки)
В приложении Gradle файл у меня есть:
provided files('libs/org.simalliance.openmobileapi.jar')
Случай № 2: не работает (в режиме релиза - без minifyEnabled)
В приложении Gradle файл у меня есть:
compile files('libs/org.simalliance.openmobileapi.jar')
В случае № 2 я получаю следующее исключение:
(java.lang.SecurityException: Access Control Enforcer: доступ к APDU запрещен!)
Что может вызвать проблему?
1 ответ
Прежде всего, вам нужно использовать "предоставленную" область действия в файле build.gradle как для отладки, так и для сборки выпуска:
dependencies {
[...]
provided files('libs/org.simalliance.openmobileapi.jar')
}
ОБНОВИТЬ
"обеспечить" устарело и было заменено на "compileOnly", поэтому для текущих версий Gradle вам нужно использовать (как прокомментировал TT--):
dependencies {
[...]
compileOnly files('libs/org.simalliance.openmobileapi.jar')
}
Кроме того, вам нужно иметь запись библиотеки-использования в вашем AndroidManifest.xml:
<uses-library android:name="org.simalliance.openmobileapi"
android:required="true" />
Тем не менее, так как вы получили SecurityException
По причине "Access Control Enforcer: доступ к APDU запрещен!", это явный признак того, что подключение и использование предоставляемой системой библиотеки Open Mobile API работали должным образом и что вы успешно подключились к системной службе SmartcardService на своем устройстве. Следовательно, ваша сборка работает, как и ожидалось.
Следовательно SecurityException
уже ясно говорит вам, в чем проблема:
Access Control Enforcer: доступ к APDU запрещен!
Это означает, что список контроля доступа на защищенном элементе не настроен должным образом. Поскольку ваша отладочная сборка работает, вы, вероятно, зарегистрировали сертификат для своей среды отладки с помощью апплета ARA (и / или файла ARF) в элементе безопасности. Однако сборки выпуска не подписаны с теми же ключами отладки (сертификатом). Вместо этого они подписываются с помощью ключей выпуска (сертификата), выбранных вами при выборе "Создать подписанный APK..." в Android Studio. Поэтому у вас есть два варианта:
Добавьте сертификат выпуска в список разрешенных приложений для вашего апплета в элементе безопасности.
Измените условия доступа на защищенном элементе на ALLOW ALL, чтобы разрешить доступ к любому апплету из любого приложения на устройстве.
В зависимости от вашего защищенного элемента вам, как правило, необходимо обновить апплет ARA (GlobalPlatform Access Control) (AID). A00000015141434C00
) или файл правил доступа (ARF), расположенный в приложении PKCS#15 (AID A000000063504B43532D3135
) или в файловой системе SIM-карты с новыми условиями доступа.