Diimplementasikan fitur pembaruan dalam aplikasi, menggunakan potongan kode berikut:
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();
});
}
Saya menguji pembaruan dalam aplikasi pada perangkat yang memiliki Android 9. Tetap saja, ini memberi saya kesalahan (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)
Dikatakan bahwa periksa tautan berikut: https://developer.android.com/reference/com/google/android/play/core/install/model/InstallErrorCode#ERROR_API_NOT_AVAILABLE )
Menggunakan Play core library versi: 1.6.5
Versi core library terbaru:
implementation 'com.google.android.play:core:1.7.0'
Namun, saya tidak bisa mengerti mengapa dikatakan bahwa ERROR_API_NOT_AVAILABLE. Bantuan apa pun akan dihargai!
android
in-app-update
google-play-core
Umang Kothari
sumber
sumber
Jawaban:
Pertama , harap periksa bahwa Anda menggunakan versi terbaru dari play library.
Kedua , fakta yang dikecilkan: Silakan periksa aplikasi yang Anda uji memiliki nama paket yang sama yang tersedia di play store.
Contoh:
Anda memiliki aplikasi di play store dengan nama paket
com.example.app
tetapi Anda menguji aplikasi Anda dengan nama paketcom.example.app.debug
. Anda akan mendapatkan kesalahan ini: ERROR_API_NOT_AVAILABLECatatan: Anda harus memiliki setidaknya satu versi aplikasi Anda di play store saat Anda menguji.
sumber
Aplikasi saya berfungsi dengan baik sebelum hari ini, tetapi saya mulai mendapatkan kesalahan ini hari ini. Salah satu solusi sementara adalah menghapus cache dan penyimpanan Google Play Store Anda dan kemudian mencoba meluncurkan aplikasi. Bagi saya, ini hanya berfungsi pertama kali, tetapi gagal setelahnya. Sebelum meluncurkan aplikasi lagi, saya harus menghapus cache dan penyimpanan lagi. Saya pikir ada sesuatu yang salah di sisi Google Play Store karena masalah ini terjadi karena semuanya baik-baik saja untuk saya sebelum hari ini.
sumber
Di atas apa yang disarankan oleh Vipal, masalah ini mungkin disebabkan oleh ketidakcocokan tanda tangan antara versi yang telah Anda instal pada perangkat dan versi yang Play Play akan berikan (ini adalah masalah umum jika Anda mencoba mengujinya dengan build debug). Lihat https://developer.android.com/guide/playcore/in-app-updates#troubleshoot
Baru-baru ini Play Core API mulai mengembalikan
API_NOT_AVAILABLE
kesalahan jika aplikasi tidak dimiliki oleh pengguna atau ketidakcocokan tanda tangan, sementara sebelum digunakan untuk mengembalikanUPDATE_NOT_AVAILABLE
Tugas yang berhasil .Rekomendasi tersebut adalah:
requestAppUpdateInfo
onFailureListener
yang menangani kegagalangetAppUpdateInfo
Sumber: Saya bekerja di tim Play Core
sumber
Solusi sementara untuk saat ini adalah mengelilingi
OnCompleteListener
dengan:try {...} catch(e: RuntimeExecutionException) {...}
Hanya untuk menghindari keharusan menghapus cache PlayStore setiap kali saya meluncurkan ulang aplikasi
sumber
Setelah lama debugging. Saya menemukan, ini karena kami sedang menguji aplikasi langsung di ponsel. Meskipun kami membuat dan menggunakan apk yang ditandatangani, kesalahan ini akan terjadi. Satu-satunya cara untuk menghilangkan kesalahan ini adalah, kita perlu mengunduh aplikasi dari google play.
Kita dapat menggunakan berbagi aplikasi internal untuk menguji atau hanya menerbitkan aplikasi kita.
sumber