Реализована функция обновления в приложении с использованием следующего фрагмента кода:
private void showInAppUpdateDialog(boolean isMandatoryUpdate) {
Task<AppUpdateInfo> appUpdateInfoTask = appUpdateManager.getAppUpdateInfo();
appUpdateInfoTask.addOnSuccessListener(appUpdateInfo -> {
if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
|| appUpdateInfo.updateAvailability() == UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS) {
int appUpdateType = isMandatoryUpdate ? IMMEDIATE : AppUpdateType.FLEXIBLE;
int requestCode = isMandatoryUpdate ? REQUEST_APP_UPDATE_IMMEDIATE : REQUEST_APP_UPDATE_FLEXIBLE;
if (appUpdateInfo.isUpdateTypeAllowed(appUpdateType)) {
// start the app update
try {
appUpdateManager.startUpdateFlowForResult(appUpdateInfo, appUpdateType, targetActivity, requestCode);
} catch (IntentSender.SendIntentException e) {
e.printStackTrace();
}
}
}
}).addOnFailureListener(e -> {
e.printStackTrace();
});
}
Я тестирую обновление в приложении на устройстве с Android 9. Тем не менее оно выдает сообщение об ошибке (ERROR_API_NOT_AVAILABLE):
com.google.android.play.core.install.InstallException: Install Error(-3): The API is not available on this device. (https://developer.android.com/reference/com/google/android/play/core/install/model/InstallErrorCode#ERROR_API_NOT_AVAILABLE)
at com.google.android.play.core.appupdate.i.a(Unknown Source:24)
at com.google.android.play.core.internal.o.a(Unknown Source:13)
at com.google.android.play.core.internal.j.onTransact(Unknown Source:22)
at android.os.Binder.execTransact(Binder.java:731)
Говорят, что проверьте следующую ссылку: https://developer.android.com/reference/com/google/android/play/core/install/model/InstallErrorCode#ERROR_API_NOT_AVAILABLE )
Использование версии библиотеки ядра Play: 1.6.5
Последняя версия базовой библиотеки:
implementation 'com.google.android.play:core:1.7.0'
Тем не менее, я не могу понять, почему он говорит, что ERROR_API_NOT_AVAILABLE. Любая помощь будет оценена!
android
in-app-update
google-play-core
Уманг Котари
источник
источник
Ответы:
Во-первых , пожалуйста, убедитесь, что вы используете последнюю версию библиотеки воспроизведения.
Во-вторых , недооцененный факт: проверьте, что приложение, которое вы тестируете, имеет такое же имя пакета, которое доступно в магазине игр.
Пример:
В магазине Play есть приложение с именем пакета,
com.example.app
но вы тестируете приложение с именем пакетаcom.example.app.debug
. Вы получите эту ошибку: ERROR_API_NOT_AVAILABLEПримечание. Во время тестирования в магазине игр должна быть хотя бы одна версия приложения.
источник
Мое приложение работало нормально до сегодняшнего дня, но я начал получать эту ошибку сегодня. Один из временных способов - очистить кэш и хранилище Google Play Store, а затем попытаться запустить приложение. Для меня это работает только в первый раз, но потом не получается. Перед повторным запуском приложения я должен очистить кеш и хранилище снова. Я думаю, что в Google Play Store что-то не так, из-за чего эта проблема происходит, потому что до сегодняшнего дня у меня все было хорошо.
источник
Вдобавок к тому, что предложил Vipal, проблема может быть связана с несоответствием подписи между версией, которую вы установили на устройстве, и той, которую поставляет Play Store (это распространенная проблема, если вы пытаетесь протестировать ее с отладочными сборками). См. Https://developer.android.com/guide/playcore/in-app-updates#troubleshoot.
Недавно API Play Core начал возвращать
API_NOT_AVAILABLE
ошибку, если приложение не принадлежит пользователю или несоответствие подписей, в то время как раньше оно использовалось для возврата успешногоUPDATE_NOT_AVAILABLE
задания.Рекомендация:
requestAppUpdateInfo
onFailureListener
который обрабатывает сбои изgetAppUpdateInfo
Источник: я работаю в команде Play Core
источник
Временный обходной путь на данный момент заключается в том,
OnCompleteListener
чтобы:try {...} catch(e: RuntimeExecutionException) {...}
Просто чтобы избежать необходимости очищать кэш PlayStore каждый раз, когда я перезапускаю приложение
источник
После долгого времени отладки. Я обнаружил, что это из-за того, что мы тестируем приложение прямо в мобильном телефоне. Даже если мы создаем и используем подписанный apk, эта ошибка произойдет. Единственный способ избавиться от этой ошибки - загрузить приложение из Google Play.
Мы можем использовать внутренний обмен приложениями для тестирования или просто опубликовать наше приложение.
источник