yoomoney / yookassa-android-sdk

This library allows implementing payment acceptance into mobile apps on Android. It works as an extension to the YooMoney API.
https://yookassa.ru/developers/payment-forms/android-sdk
MIT License
40 stars 22 forks source link

Crash on sdk 5.1.0 #70

Closed RJSDevel closed 3 years ago

RJSDevel commented 3 years ago

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"
bsergik commented 3 years ago

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

Использую 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

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

RJSDevel commented 3 years ago

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

iskandarshabaev commented 3 years ago

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

oleonov commented 3 years ago

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

iskandarshabaev commented 3 years ago

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

oleonov commented 3 years ago

В версии 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

iskandarshabaev commented 3 years ago

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

oleonov commented 3 years ago

В build.gradle модуля implementation fileTree(include: ['*.jar'], dir: 'libs') В папке libs модуля сама библиотека

Screenshot 2021-03-16 at 12 15 04
iskandarshabaev commented 3 years ago

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

oleonov commented 3 years ago

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