Uygulama İçi Güncelleme InstallException veriyor (ERROR_API_NOT_AVAILABLE)


12

Aşağıdaki kod snippet'ini kullanarak uygulama içi güncelleme özelliğini uyguladı:

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();
    });
}

Android 9'u olan cihazda uygulama içi güncellemeyi test ediyorum. Yine de, bir hatayı (ERROR_API_NOT_AVAILABLE) izleyerek bana veriyor:

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)

Aşağıdaki bağlantıyı kontrol ettiğiniz söyleniyor: https://developer.android.com/reference/com/google/android/play/core/install/model/InstallErrorCode#ERROR_API_NOT_AVAILABLE )

Play çekirdek kitaplığı sürümünü kullanma: 1.6.5

En son çekirdek kütüphane sürümü:

implementation 'com.google.android.play:core:1.7.0'

Ancak, neden ERROR_API_NOT_AVAILABLE dediğini elde edemiyorum. Herhangi bir yardım mutluluk duyacağız!


cevabın var mı?
Ankur_009

Henüz değil, ancak InApp Güncellemesini test etmek için bu dahili uygulama paylaşımını kullanabilirsiniz: support.google.com/googleplay/android-developer/answer/…
Umang Kothari

cevabın var mı?
moDev

Bunun için geçerli bir cevabınız var mı?
Dhaval Kansara

Herhangi bir cevabınız var, bunu nasıl çözeceksiniz? Aynı hatayı alıyorum.
Ashish Agrawal

Yanıtlar:


5

Öncelikle , lütfen oyun kütüphanesinin en son sürümünü kullandığınızdan emin olun.

İkincisi , sade gerçek: Lütfen test ettiğiniz uygulamanın oyun mağazasında bulunan paket adının aynı olup olmadığını kontrol edin.

Misal:

Google Play Store'da paket adıyla bir uygulamanız var, com.example.appancak uygulamanızı paket adıyla test ediyorsunuz com.example.app.debug. Şu hatayı alırsınız: ERROR_API_NOT_AVAILABLE

Not: Test yaparken uygulamanızın oyun mağazasında en az bir sürümüne sahip olmanız gerekir.


1. Oyun kitaplığının en son sürümünü kullanma 2. Paket İsimleri aynı Hala bu sorunla karşı karşıya :(
Umang Kothari

Release derlemesi için iyi çalışır, ancak Debug sürümünde yalnızca bir kez Play Store önbelleğinizi ve depolama alanınızı temizlerseniz çalışır. Tekrar çalıştırmak için Play Store'un önbelleğini ve depolamasını tekrar temizlemeniz gerekir.
Abdul Mateen

1
oh bu aslında benim için çalıştı. Play Store'un önbelleğini ve mağaza verilerini temizledim. @AbdulMateen
gmartinsnull

Sorunun oyun konsoluna yüklenen sertifika ile ilgili olduğunu düşünüyorum. Hata ayıklama sürümü farklı bir sertifikaya sahip ve "üretim" sertifikası ile eşleşmiyor. Yani FakeUpdateManager ile api'yi test etmek imkansız
Nicola Gallazzi

2

Uygulamam bugüne kadar iyi çalışıyordu, ancak bugün bu hatayı almaya başladım. Geçici bir çözüm, Google Play Store önbelleğinizi ve depolama alanınızı temizleyip uygulamayı başlatmayı denemektir. Benim için sadece ilk kez çalışıyor, ancak daha sonra başarısız oluyor. Uygulamayı tekrar başlatmadan önce önbelleği ve depolamayı tekrar temizlemem gerekiyor. Google Play Store tarafında, bu sorunun yaşandığı için yanlış bir şey olduğunu düşünüyorum, çünkü bugün önce her şey benim için iyiydi.


2

Vipal'ın önerdiği şeyin üstünde, sorun, cihaza yüklediğiniz sürüm ile Play Store'un sunacağı sürüm arasındaki imza uyuşmazlığından kaynaklanıyor olabilir (hata ayıklama yapılarıyla test etmeye çalışırsanız bu yaygın bir sorundur). Bkz. Https://developer.android.com/guide/playcore/in-app-updates#tro Sorun Giderme

Son zamanlarda, Play Core API API_NOT_AVAILABLE, uygulama kullanıcıya ait değilse veya imza uyuşmazlığında değilse ve başarılı bir UPDATE_NOT_AVAILABLEGörevi döndürmek için kullanılmadan önce bir hata döndürmeye başladı .

Öneri:

  • Kotlin Uzantısını kullanırsanız, atılan istisnayı yakaladığınızdan emin olun. requestAppUpdateInfo
  • PlayCore Java kullanıyorsanız, aşağıdakilerden onFailureListenerkaynaklanan hataları işleyen bir programa sahip olduğunuzdan emin olun :getAppUpdateInfo
  • bir hata ayıklama derlemesini test etmek için, burada açıklandığı gibi Dahili Uygulama Paylaşımı'nı kullanabilirsiniz: https://developer.android.com/guide/playcore/in-app-updates#internal-app-sharing

Kaynak: Play Core ekibinde çalışıyorum


Dahili uygulama paylaşımını kullanmak bana çok yardımcı oldu. Bunu tavsiye ederim. Biraz hantal, ama hiçbir "anlamsız" hata mesajlarının pop-up sağlar.
MartinJH

0

Şu an için geçici çözüm a'yı şu şekilde çevrelemektir OnCompleteListener:

try {...} catch(e: RuntimeExecutionException) {...}

Uygulamayı her yeniden başlattığımda PlayStore önbelleğini temizlemek zorunda kalmamak için


1
Belki bunu addOnFailureListener ile yapabilirsin ? Çünkü buna bir hata denir. Bir BaseActivity InAppUpdate işlemi var ve ihtiyacı olan herhangi bir etkinliğe sonuç vermek için bir arabirim kullanın.
Sceada

0

Hata ayıklama uzun süre sonra. Buldum, bunun nedeni doğrudan mobilde uygulamayı test ediyoruz. İmzalı apk oluşturup kullansak da, bu hata oluşacaktır. Bu hatadan kurtulmanın tek yolu, uygulamayı google play'den indirmemiz gerekiyor.

Uygulamamızı test etmek veya yayınlamak için Dahili uygulama paylaşımını kullanabiliriz .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.