Я следую этому документу, чтобы настроить доставку игровых активов, которая загружает несколько пакетов по запросу в мое приложение.
Он очень хорошо работает на всех моих устройствах, когда я загружаю его во внутренний тестовый/производственный канал Google Play.
assetPackManager.registerListener(downloadListener)
assetPackManager.fetch(listOf(packageName)).addOnCompleteListener{ res ->
Timber.i("Download $packageName ${res.isSuccessful}")
}
Но я получил много отчетов об ошибках от firebase crashlytics, которые я не знаю, как решить:
Fatal Exception: java.lang.Exception com.google.android.play.core.assetpacks.b: -11:
Asset Pack Download Error(-11): The Play Store app is either not installed or not the
official version.
(https://developer.android.com/reference/com/google/android/play/core/assetpacks/model/AssetPackErrorCode.html#PLAY_STORE_NOT_FOUND) at
com.google.android.play.core.assetpacks.e0.l(Unknown Source:21) at
com.google.android.play.core.assetpacks.e0.f(Unknown Source:4) at
com.google.android.play.core.assetpacks.o4.g(Unknown Source:19) at
com.bookbot.i.s(Unknown Source:231) at com.bookbot.i.C(Unknown Source:24) at
com.bookbot.i.f(Unknown Source:0) at com.bookbot.h.run(Unknown Source:6) at
android.os.Handler.handleCallback(Handler.java:883) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7397) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:935)
В этом документе говорят The Play Store app is either not installed or not the official version, но я не очень понимаю. Мое приложение публикуется в Google Play только с помощью пакета приложений, я больше нигде не публикуюсь, поэтому мне интересно, почему он говорит, что PlayStore не является официальным?
Вот некоторые затронутые устройства:
AT&T Fusion Z (android 10)
Galaxy S9 (android 10)
vsmart (android 11)
Есть ли способ решить эту проблему? Или хотя бы проверить, не поддерживается ли устройство Play Asset Delivery?
Что ж, сообщение об ошибке говорит вам, что именно не так — на этих конкретных устройствах приложение Play Store либо удалено, либо отключено. Или они могли быть рутированы, а приложение Play Store было изменено. Или эти устройства могут быть настроены вообще без сервисов Google и использовать альтернативные магазины приложений.
Однако это достаточно легко проверить. Просто используйте GoogleApiAvailability:
val result = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(activityContext)
и оттуда вы можете либо реализовать свою собственную логику, либо Google отобразит диалоговое окно с ошибкой:
val dialog = GoogleApiAvailability.getInstance().getErrorDialog(activityContext, result, 123)
dialog?.show()
Вы также можете настроить onActivityResult() для проверки ответа из диалогового окна ошибки.
да, он сообщит вам, можно ли использовать сервисы Play или нет
Спасибо. Я знал о проверке доступности службы Google Play, но это то же самое для этой проблемы с Google Play, такой как root или недоступно?