Se implementó la función de actualización en la aplicación, utilizando el siguiente fragmento de código:
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();
});
}
Estoy probando la actualización en la aplicación en el dispositivo que tiene Android 9. Aún así, me está dando un error siguiente (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)
Está diciendo que revise el siguiente enlace: https://developer.android.com/reference/com/google/android/play/core/install/model/InstallErrorCode#ERROR_API_NOT_AVAILABLE )
Usando la versión de la biblioteca principal de Play: 1.6.5
Última versión de la biblioteca central:
implementation 'com.google.android.play:core:1.7.0'
Sin embargo, no puedo entender por qué dice que ERROR_API_NOT_AVAILABLE. ¡Cualquier ayuda sería apreciada!
android
in-app-update
google-play-core
Umang Kothari
fuente
fuente
Respuestas:
En primer lugar , compruebe que está utilizando la última versión de la biblioteca de reproducción.
En segundo lugar , hecho discreto: compruebe que la aplicación que está probando tiene el mismo nombre de paquete que está disponible en Play Store.
Ejemplo:
Tiene una aplicación en Play Store con el nombre del paquete,
com.example.app
pero está probando su aplicación con el nombre del paquetecom.example.app.debug
. Obtendrá este error: ERROR_API_NOT_AVAILABLENota: debe tener al menos una versión de su aplicación en Play Store cuando realice la prueba.
fuente
Mi aplicación funcionaba bien antes de hoy, pero hoy comencé a recibir este error. Una solución temporal es borrar la memoria caché y el almacenamiento de Google Play Store y luego intentar iniciar la aplicación. Para mí, funciona solo la primera vez, pero falla después. Antes de volver a iniciar la aplicación, tengo que borrar el caché y el almacenamiento nuevamente. Creo que hay algo mal en el lado de Google Play Store debido a que este problema está sucediendo porque todo estaba bien para mí antes de hoy.
fuente
Además de lo que sugirió Vipal, el problema puede deberse a una falta de coincidencia de firma entre la versión que instaló en el dispositivo y la que ofrecería Play Store (este es un problema común si intenta probarlo con versiones de depuración). Ver https://developer.android.com/guide/playcore/in-app-updates#troubleshoot
Recientemente, la API de Play Core comenzó a devolver un
API_NOT_AVAILABLE
error si la aplicación no es propiedad del usuario o las firmas no coinciden, mientras que antes solía devolver unaUPDATE_NOT_AVAILABLE
Tarea exitosa .La recomendación es:
requestAppUpdateInfo
onFailureListener
que maneje las fallas degetAppUpdateInfo
Fuente: trabajo en el equipo de Play Core
fuente
La solución temporal por el momento es rodear el
OnCompleteListener
con:try {...} catch(e: RuntimeExecutionException) {...}
Solo para evitar tener que borrar el caché de PlayStore cada vez que reinicio la aplicación
fuente
Después de mucho tiempo de depuración. Descubrí que esto se debe a que estamos probando la aplicación directamente en el móvil. Aunque generamos y usamos apk firmado, se producirá este error. La única forma de deshacerse de este error es que necesitamos descargar la aplicación desde Google Play.
Podemos usar el uso compartido interno de aplicaciones para probar o simplemente publicar nuestra aplicación.
fuente