yoomoney/yookassa-android-sdk

Crash on sdk 5.1.0

RJSDevel opened this issue · 10 comments

java.lang.IllegalAccessError: Class androidx.lifecycle.ViewModelProvider$KeyedFactory extended by class a.a.a is inaccessible (declaration of 'a.a.a' appears in /data/app/ru.app.app-nBN9OVHnJSFKACet7tEshA==/base.apk)
at ru.yoo.sdk.kassa.payments.ui.CheckoutActivity.onCreate(:6)

implementation 'ru.yoo.sdk.kassa.payments:yookassa-android-sdk:5.1.0'
implementation "ru.yoo.sdk.auth:auth:1.0.47"

Опередили. Тоже составлял репорт. Чуть дополню своей историей:

Использую yookassa-android-sdk в связке с Flutter. Получаю Fatal exception при запуске приложения:

.....
I/ple.abc_flutte( 2524): Rejecting re-init on previously-failed class java.lang.Class<a.a.a>: java.lang.IllegalAccessError: Class androidx.lifecycle.ViewModelProvider$KeyedFactory extended by class a.a.a is inaccessible (declaration of 'a.a.a' appears in /data/app/com.example.abc_flutter-8G7ZAQFVxMcnoFhEYh25uw==/base.apk)
I/ple.abc_flutte( 2524):   at void ru.yoo.sdk.kassa.payments.ui.CheckoutActivity.onCreate(android.os.Bundle) (:6)
I/ple.abc_flutte( 2524):   at void android.app.Activity.performCreate(android.os.Bundle, android.os.PersistableBundle) (Activity.java:8623)
I/ple.abc_flutte( 2524):   at void android.app.Activity.performCreate(android.os.Bundle) (Activity.java:8614)
I/ple.abc_flutte( 2524):   at void android.app.Instrumentation.callActivityOnCreate(android.app.Activity, android.os.Bundle) (Instrumentation.java:1274)
I/ple.abc_flutte( 2524):   at android.app.Activity android.app.ActivityThread.performLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent) (ActivityThread.java:3028)
I/ple.abc_flutte( 2524):   at android.app.Activity android.app.ActivityThread.handleLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.app.servertransaction.PendingTransactionActions, android.content.Intent) (ActivityThread.java:3198)
I/ple.abc_flutte( 2524):   at void android.app.servertransaction.LaunchActivityItem.execute(android.app.ClientTransactionHandler, android.os.IBinder, android.app.servertransaction.PendingTransactionActions) (LaunchActivityItem.java:78)
I/ple.abc_flutte( 2524):   at void android.app.servertransaction.TransactionExecutor.executeCallbacks(android.app.servertransaction.ClientTransaction) (TransactionExecutor.java:108)
I/ple.abc_flutte( 2524):   at void android.app.servertransaction.TransactionExecutor.execute(android.app.servertransaction.ClientTransaction) (TransactionExecutor.java:68)
I/ple.abc_flutte( 2524):   at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1893)
I/ple.abc_flutte( 2524):   at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:106)
I/ple.abc_flutte( 2524):   at void android.os.Looper.loop() (Looper.java:192)
I/ple.abc_flutte( 2524):
D/AndroidRuntime( 2524): Shutting down VM
E/AndroidRuntime( 2524): FATAL EXCEPTION: main
E/AndroidRuntime( 2524): Process: com.example.abc_flutter, PID: 2524
E/AndroidRuntime( 2524): java.lang.IllegalAccessError: Class androidx.lifecycle.ViewModelProvider$KeyedFactory extended by class a.a.a is inaccessible (declaration of 'a.a.a' appears in /data/app/com.example.abc_flutter-8G7ZAQFVxMcnoFhEYh25uw==/base.apk)
E/AndroidRuntime( 2524): 	at ru.yoo.sdk.kassa.payments.ui.CheckoutActivity.onCreate(:6)
E/AndroidRuntime( 2524): 	at android.app.Activity.performCreate(Activity.java:8623)
E/AndroidRuntime( 2524): 	at android.app.Activity.performCreate(Activity.java:8614)
E/AndroidRuntime( 2524): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1274)
E/AndroidRuntime( 2524): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3028)
E/AndroidRuntime( 2524): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3198)
E/AndroidRuntime( 2524): 	at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
E/AndroidRuntime( 2524): 	at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
E/AndroidRuntime( 2524): 	at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
E/AndroidRuntime( 2524): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1893)
E/AndroidRuntime( 2524): 	at android.os.Handler.dispatchMessage(Handler.java:106)
E/AndroidRuntime( 2524): 	at android.os.Looper.loop(Looper.java:192)
E/AndroidRuntime( 2524): 	at android.app.ActivityThread.main(ActivityThread.java:7169)
E/AndroidRuntime( 2524): 	at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime( 2524): 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:504)
E/AndroidRuntime( 2524): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

Создал минимальный Flutter проект, который приводит к данной ошибке. Все настройки android приложения и build.gradle файлов можно посмотреть в аттачменте.

abc_flutter.zip

Вкратце, для запуска проекта необходимо:

  • установить flutter (использовать channel dev, хотя с другими думаю будет то же самое),
  • скопировать файл ThreatMetrix_Android_SDK_5.4-73.aar в папку android/app/libs,
  • запустить в android-studio (android-studio поддерживает открытие flutter проекта с доустановкой flutter plugin-а).

Я переезжал с SDK Yandex Money, не Flutter, только Java, кэш чистил, либы которые менеджер должен был дать есть, в libs пихал их, но появлялась другая ошибка, дублирование классов, выпилил их т.к через градл новее были.

Спасибо за подробное описание, уже смотрим в чём проблема.

Такая же проблема.

Выкатили релиз, проблема должна пропасть в версии 5.1.1

В версии 5.1.1
E/ActivityThread: Failed to find provider info for com.yandex.preinstallsatellite.appmetrica.provider
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/threatmetrix/TrustDefender/TrustDefender

Библиотека
ThreatMetrix Android SDK 5.4-73.aar

Как вы подключаете ThreatMetrix Android SDK 5.4-73.aar?
Тут есть инструкция https://github.com/yoomoney/yookassa-android-sdk#подключение-через-gradle

В build.gradle модуля
implementation fileTree(include: ['*.jar'], dir: 'libs')
В папке libs модуля сама библиотека
Screenshot 2021-03-16 at 12 15 04

В libs лежит файл с расширением .arr, а в gradle вы подключаете .jar
Расширьте строку так: implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')

Точно, спасибо