Вчера я выпустил обновление для платного приложения, которое есть в Google Play Store.
Через несколько часов я получил 1-звездочный отзыв от пользователя, который пожаловался на сбой приложения, поэтому я пошел исследовать его в разделе Android Vitals на консоли разработчика.Сначала я не видел никаких признаков сбоев или ANR, но когда я изменил фильтр «Установлен из Play» на «Установлен из любого места», я увидел, что это приложение действительно сильно зависало для этого единственного пользователя.
Я немного озадачен и любопытно, что это значит - если он действительно заполучил приложение откуда-то еще, почему он может оставить отзыв в Google Play?И как получилось, что он даже смог обновить приложение?
Может ли "Установлено из любого места" включать другие вещи, например, пользователя, который удалил приложение после сбоя?Или пользователь, который сделал резервную копию приложения, используя что-то вроде Titanium, а затем восстановил его из резервной копии?
Вероятно, я должен также упомянуть, что фактический сбой произошел в Библиотеке проверки лицензий Google, что делает часть «Установлено из любого места» еще более подозрительной.Вот трассировка стека (к сожалению, я забыл загрузить mapping.txt
, чтобы деобфусцировать имена методов, и уже внес изменения в исходный код).
Google Pixel XL (marlin), Android 9
java.lang.NoClassDefFoundError:
at com.google.android.vending.licensing.l.d (Unknown Source:29)
at com.google.android.vending.licensing.l.a (Unknown Source:25)
at com.google.android.vending.licensing.f.a (Unknown Source:2)
at com.google.android.vending.licensing.f.a (Unknown Source:209)
at com.google.android.vending.licensing.d$a$2.run (Unknown Source:52)
at android.os.Handler.handleCallback (Handler.java:873)
at android.os.Handler.dispatchMessage (Handler.java:99)
at android.os.Looper.loop (Looper.java:193)
at android.os.HandlerThread.run (HandlerThread.java:65)
Caused by: java.lang.ClassNotFoundException:
at dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:134)
at java.lang.ClassLoader.loadClass (ClassLoader.java:379)
at java.lang.ClassLoader.loadClass (ClassLoader.java:312)
Поначалу может показаться, что проблема мультидекса, но более 50 других уже обновили приложение, и все же есть только отчет о сбое от этого единственного пользователя.Если бы это действительно была проблема мультидекса, разве это не затронуло бы большинство пользователей (по крайней мере, пользователей той же версии Android)?