Skip to content

[BUG]: Креш приложения при возврате через deeplink если наше приложение закрыто #100

@AleksandrZonov-Azur

Description

@AleksandrZonov-Azur

Опишите баг

При открытии com.vk.id.internal.auth.AuthActivity если наше приложение было закрыто до возврата через диплинк - происходит креш по причине что VKID не проинициализирован.

В нашем случае у нас нет возможности вызвать инициализацию VKID раньше чем открывается ваша активити com.vk.id.internal.auth.AuthActivity т.к. инициализация происходит позже из c# кода.

Кейс не стандартный, но это отражается на аналитике по крешам, он стоит на 3 месте и занимает 3% от общего кол-ва. Учитывая что приложение ранее всё равно было закрыто, данные из диплинка нам уже по факту не нужны т.к. нет данных о начале авторизации, и этот креш просто портит нам статистику относительно которой google может понизить органику.

Вопроизведение

  1. начинаем авторизацию
  2. ловим момент открытия VK приложения или браузера
  3. в списке процессов закрываем наше приложение
  4. завершаем авторизацию в VK или браузере
  5. deeplink запустит наше приложение в котором сразу будет открыто активити com.vk.id.internal.auth.AuthActivity
  6. произойдёт креш из за необработанного исключения о том что 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions