Implementierte In-App-Update-Funktion unter Verwendung des folgenden Code-Snippets:
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();
});
}
Ich teste das In-App-Update auf dem Gerät mit Android 9. Trotzdem wird mir ein Fehler angezeigt (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)
Überprüfen Sie den folgenden Link: https://developer.android.com/reference/com/google/android/play/core/install/model/InstallErrorCode#ERROR_API_NOT_AVAILABLE )
Verwenden der Play Core Library-Version: 1.6.5
Neueste Version der Kernbibliothek:
implementation 'com.google.android.play:core:1.7.0'
Ich kann jedoch nicht verstehen, warum ERROR_API_NOT_AVAILABLE steht. Jede Hilfe wäre dankbar!
android
in-app-update
google-play-core
Umang Kothari
quelle
quelle
Antworten:
Überprüfen Sie zunächst , ob Sie die neueste Version der Wiedergabebibliothek verwenden.
Zweitens eine untertriebene Tatsache: Bitte überprüfen Sie, ob die App, die Sie testen, denselben Paketnamen hat, der im Play Store verfügbar ist.
Beispiel:
Sie haben eine App im Play Store mit dem Paketnamen,
com.example.app
aber Sie testen Ihre App mit dem Paketnamencom.example.app.debug
. Sie erhalten folgende Fehlermeldung: ERROR_API_NOT_AVAILABLEHinweis: Sie müssen beim Testen mindestens eine Version Ihrer App im Play Store haben.
quelle
Meine App hat vor heute einwandfrei funktioniert, aber ich habe heute angefangen, diesen Fehler zu bekommen. Eine vorübergehende Problemumgehung besteht darin, den Cache und den Speicher Ihres Google Play Store zu leeren und anschließend die App zu starten. Bei mir funktioniert es nur beim ersten Mal, scheitert aber danach. Bevor ich die App erneut starte, muss ich den Cache und den Speicher erneut leeren. Ich denke, auf der Google Play Store-Seite stimmt etwas nicht, weshalb dieses Problem auftritt, da mir bis heute alles in Ordnung war.
quelle
Zusätzlich zu den Vorschlägen von Vipal kann das Problem auf eine Signaturinkongruenz zwischen der auf dem Gerät installierten Version und der vom Play Store bereitgestellten Version zurückzuführen sein (dies ist ein häufiges Problem, wenn Sie versuchen, es mit Debug-Builds zu testen). Siehe https://developer.android.com/guide/playcore/in-app-updates#troubleshoot
Vor kurzem hat die Play Core-API einen
API_NOT_AVAILABLE
Fehler zurückgegeben, wenn die App nicht dem Benutzer gehört oder die Signaturen nicht übereinstimmen, bevor zuvor eine erfolgreicheUPDATE_NOT_AVAILABLE
Aufgabe zurückgegeben wurde.Die Empfehlung lautet:
requestAppUpdateInfo
onFailureListener
, die Fehler von behandeltgetAppUpdateInfo
Quelle: Ich arbeite im Play Core-Team
quelle
Temporäre Problemumgehung für den Moment besteht darin, das
OnCompleteListener
mit einem zu umgeben :try {...} catch(e: RuntimeExecutionException) {...}
Nur um zu vermeiden, dass der PlayStore-Cache bei jedem Neustart der App geleert werden muss
quelle
Nach langer Zeit des Debuggens. Ich fand, das liegt daran, dass wir die App direkt auf dem Handy testen. Obwohl wir signierte apk generieren und verwenden, tritt dieser Fehler auf. Die einzige Möglichkeit, diesen Fehler zu beheben, besteht darin, die App von Google Play herunterzuladen.
Wir können die interne App-Freigabe verwenden , um unsere App zu testen oder einfach zu veröffentlichen.
quelle