Опишите баг
При открытии com.vk.id.internal.auth.AuthActivity если наше приложение было закрыто до возврата через диплинк - происходит креш по причине что VKID не проинициализирован.
В нашем случае у нас нет возможности вызвать инициализацию VKID раньше чем открывается ваша активити com.vk.id.internal.auth.AuthActivity т.к. инициализация происходит позже из c# кода.
Кейс не стандартный, но это отражается на аналитике по крешам, он стоит на 3 месте и занимает 3% от общего кол-ва. Учитывая что приложение ранее всё равно было закрыто, данные из диплинка нам уже по факту не нужны т.к. нет данных о начале авторизации, и этот креш просто портит нам статистику относительно которой google может понизить органику.
Вопроизведение
- начинаем авторизацию
- ловим момент открытия VK приложения или браузера
- в списке процессов закрываем наше приложение
- завершаем авторизацию в VK или браузере
- deeplink запустит наше приложение в котором сразу будет открыто активити
com.vk.id.internal.auth.AuthActivity
- произойдёт креш из за необработанного исключения о том что VKID не инициализирован
Ожидаемое поведение
Ваша активити на onCreate должна проверить инициализирован ли VKID, если нет, тогда завершить активити с ошибкой. Если возможности определить инициализацию нет, то можно обернуть в try\catch и так же завершить активити с ошибкой. Либо вовсе убрать это исключение из VKID и сделать чтобы результаты операций с VKID просто возвращали ошибку(коллбек с ошибкой) если VKID не проинициализирован.
Фактическое поведение
Происходит креш:
Exception java.lang.RuntimeException:
at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3654)
at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3806)
at android.app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem.java:83)
at android.app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2267)
at android.os.Handler.dispatchMessage (Handler.java:107)
at android.os.Looper.loop (Looper.java:237)
at android.app.ActivityThread.main (ActivityThread.java:8167)
at java.lang.reflect.Method.invoke
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:496)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1100)
Caused by java.lang.IllegalStateException: VKID is not initialized
at com.vk.id.VKID$Companion.getInstance (VKID.kt:244)
at com.vk.id.internal.auth.AuthActivity.onCreate (AuthActivity.kt:71)
at android.app.Activity.performCreate (Activity.java:7963)
at android.app.Activity.performCreate (Activity.java:7952)
at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1307)
at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3629)
Используемые модули и их версии
com.vk.id:vkid:2.6.0
com.vk.id:onetap-compose:2.6.0
Скриншоты
No response
Смартфон или эмулятор
Любое устройство с любой версией ОС
Внутренний или внешний сервис
нет
Обновляли ли вы сдк
нет
Исправлена ли ошибка
нет
Где инициализиурете SDK
Инициализация происходит из c# кода через JNI, т.к. application и activity от движка мы не можем менять.
Версия клиента авторизации
любая
Дополнительные заметки
No response
Опишите баг
При открытии
com.vk.id.internal.auth.AuthActivityесли наше приложение было закрыто до возврата через диплинк - происходит креш по причине что VKID не проинициализирован.В нашем случае у нас нет возможности вызвать инициализацию VKID раньше чем открывается ваша активити
com.vk.id.internal.auth.AuthActivityт.к. инициализация происходит позже из c# кода.Кейс не стандартный, но это отражается на аналитике по крешам, он стоит на 3 месте и занимает 3% от общего кол-ва. Учитывая что приложение ранее всё равно было закрыто, данные из диплинка нам уже по факту не нужны т.к. нет данных о начале авторизации, и этот креш просто портит нам статистику относительно которой google может понизить органику.
Вопроизведение
com.vk.id.internal.auth.AuthActivityОжидаемое поведение
Ваша активити на
onCreateдолжна проверить инициализирован ли VKID, если нет, тогда завершить активити с ошибкой. Если возможности определить инициализацию нет, то можно обернуть в try\catch и так же завершить активити с ошибкой. Либо вовсе убрать это исключение из VKID и сделать чтобы результаты операций с VKID просто возвращали ошибку(коллбек с ошибкой) если VKID не проинициализирован.Фактическое поведение
Происходит креш:
Используемые модули и их версии
com.vk.id:vkid:2.6.0
com.vk.id:onetap-compose:2.6.0
Скриншоты
No response
Смартфон или эмулятор
Любое устройство с любой версией ОС
Внутренний или внешний сервис
нет
Обновляли ли вы сдк
нет
Исправлена ли ошибка
нет
Где инициализиурете SDK
Инициализация происходит из c# кода через JNI, т.к. application и activity от движка мы не можем менять.
Версия клиента авторизации
любая
Дополнительные заметки
No response