Recurso de atualização no aplicativo implementado, usando o seguinte snippet 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();
});
}
Estou testando a atualização no aplicativo no dispositivo com o Android 9. Ainda assim, ele está ocorrendo um erro (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á dizendo que verifique o seguinte link: https://developer.android.com/reference/com/google/android/play/core/install/model/InstallErrorCode#ERROR_API_NOT_AVAILABLE )
Usando a versão principal da biblioteca do Play: 1.6.5
Versão mais recente da biblioteca principal:
implementation 'com.google.android.play:core:1.7.0'
No entanto, não consigo entender por que está dizendo isso ERROR_API_NOT_AVAILABLE. Qualquer ajuda seria apreciada!
android
in-app-update
google-play-core
Umang Kothari
fonte
fonte
Respostas:
Primeiramente , verifique se você está usando a versão mais recente da biblioteca de jogos.
Segundo , fato discreto: verifique se o aplicativo que você está testando tem o mesmo nome de pacote disponível na loja de jogos.
Exemplo:
Você tem um aplicativo na Play Store com o nome do pacote,
com.example.app
mas está testando seu aplicativo com o nome do pacotecom.example.app.debug
. Você receberá este erro: ERROR_API_NOT_AVAILABLENota: Você precisa ter pelo menos uma versão do seu aplicativo na loja de jogos quando estiver testando.
fonte
Meu aplicativo estava funcionando bem antes de hoje, mas comecei a receber esse erro hoje. Uma solução temporária é limpar o cache e o armazenamento da Google Play Store e tentar iniciar o aplicativo. Para mim, funciona apenas na primeira vez, mas falha depois. Antes de iniciar o aplicativo novamente, tenho que limpar o cache e o armazenamento novamente. Acho que há algo errado no lado da Google Play Store, devido a que esse problema está acontecendo porque tudo estava bem para mim antes de hoje.
fonte
Além do que Vipal sugeriu, o problema pode ser devido a uma incompatibilidade de assinatura entre a versão que você instalou no dispositivo e a que a Play Store entregaria (esse é um problema comum se você tentar testá-lo com compilações de depuração). Consulte https://developer.android.com/guide/playcore/in-app-updates#troubleshoot
Recentemente, a API do Play Core começou a retornar um
API_NOT_AVAILABLE
erro se o aplicativo não pertencer ao usuário ou a incompatibilidade de assinaturas, enquanto antes era usado para retornar umaUPDATE_NOT_AVAILABLE
tarefa bem-sucedida .A recomendação é:
requestAppUpdateInfo
onFailureListener
que lide com falhas degetAppUpdateInfo
Fonte: Trabalho na equipe do Play Core
fonte
A solução temporária no momento é cercar o
OnCompleteListener
com um:try {...} catch(e: RuntimeExecutionException) {...}
Apenas para evitar ter que limpar o cache do PlayStore toda vez que reinicio o aplicativo
fonte
Após muito tempo de depuração. Descobri, isso é porque estamos testando o aplicativo diretamente no celular. Mesmo que geremos e usemos apk assinado, esse erro ocorrerá. A única maneira de se livrar desse erro é: precisamos baixar o aplicativo no google play.
Podemos usar o compartilhamento interno de aplicativos para testar ou simplesmente publicar nosso aplicativo.
fonte