Fonctionnalité de mise à jour intégrée à l'application, à l'aide de l'extrait de code suivant:
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();
});
}
Je teste la mise à jour de l'application sur l'appareil équipé d'Android 9. Pourtant, cela me donne suite à une erreur (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)
Il dit que vérifiez le lien suivant: https://developer.android.com/reference/com/google/android/play/core/install/model/InstallErrorCode#ERROR_API_NOT_AVAILABLE )
Utilisation de la version de la bibliothèque principale de Play: 1.6.5
Dernière version de la bibliothèque principale:
implementation 'com.google.android.play:core:1.7.0'
Cependant, je ne suis pas en mesure de comprendre pourquoi il indique que ERROR_API_NOT_AVAILABLE. Toute aide serait appréciée!
android
in-app-update
google-play-core
Umang Kothari
la source
la source
Réponses:
Tout d'abord , veuillez vérifier que vous utilisez la dernière version de la bibliothèque de jeux.
Deuxièmement , fait sous-estimé: veuillez vérifier que l'application que vous testez a le même nom de package que celui disponible sur le Play Store.
Exemple:
Vous avez une application sur le Play Store avec le nom du package
com.example.app
mais vous testez votre application avec le nom du packagecom.example.app.debug
. Vous obtiendrez cette erreur: ERROR_API_NOT_AVAILABLERemarque: Vous devez avoir au moins une version de votre application sur le Play Store lorsque vous testez.
la source
Mon application fonctionnait bien avant aujourd'hui, mais j'ai commencé à recevoir cette erreur aujourd'hui. Une solution de contournement temporaire consiste à effacer le cache et le stockage de votre Google Play Store, puis essayez de lancer l'application. Pour moi, cela ne fonctionne que la première fois, mais échoue ensuite. Avant de relancer l'application, je dois à nouveau vider le cache et le stockage. Je pense qu'il y a un problème du côté de Google Play Store à cause duquel ce problème se produit, car tout allait bien pour moi avant aujourd'hui.
la source
En plus de ce que Vipal a suggéré, le problème peut être dû à un décalage de signature entre la version que vous avez installée sur l'appareil et celle que Play Store fournirait (c'est un problème courant si vous essayez de le tester avec des versions de débogage). Voir https://developer.android.com/guide/playcore/in-app-updates#troubleshoot
Récemment, l'API Play Core a commencé à renvoyer une
API_NOT_AVAILABLE
erreur si l'application n'appartient pas à l'utilisateur ou si les signatures ne correspondent pas, alors qu'auparavant, elle renvoyait uneUPDATE_NOT_AVAILABLE
tâche réussie .La recommandation est:
requestAppUpdateInfo
onFailureListener
qui gère les échecs degetAppUpdateInfo
Source: Je travaille sur l'équipe Play Core
la source
Une solution temporaire pour le moment consiste à entourer le
OnCompleteListener
:try {...} catch(e: RuntimeExecutionException) {...}
Juste pour éviter d'avoir à vider le cache PlayStore à chaque fois que je relance l'application
la source
Après une longue période de débogage. J'ai trouvé, c'est parce que nous testons l'application directement sur mobile. Même si nous générons et utilisons l'apk signé, cette erreur se produira. La seule façon de se débarrasser de cette erreur est de télécharger l'application depuis Google Play.
Nous pouvons utiliser le partage d'application interne pour tester ou simplement publier notre application.
la source