इन-ऐप अपडेट इंस्टाल एक्ससेप्शन (ERROR_API_NOT_AVAILABLE) देता है


12

निम्नलिखित कोड स्निपेट का उपयोग करके इन-ऐप अपडेट सुविधा लागू की गई:

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

मैं उस डिवाइस पर इन-ऐप अपडेट का परीक्षण कर रहा हूं जिसमें एंड्रॉइड 9 है। फिर भी, यह मुझे एक त्रुटि (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)

यह कह रहा है कि निम्नलिखित लिंक की जाँच करें: https://developer.android.com/reference/com/google/android/play/core/install/model/InstallErrorCode#ERROR_API_NOT_AVILABLE )

प्ले कोर लाइब्रेरी संस्करण का उपयोग करना: 1.6.5

नवीनतम मुख्य पुस्तकालय संस्करण:

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

हालाँकि, मैं यह नहीं कह पा रहा हूँ कि यह क्यों कह रहा है कि ERROR_API_NOT_AVAILABLE। किसी भी सहायता की सराहना की जाएगी!


कोई जवाब मिला?
अंकुर_००

अभी तक नहीं, लेकिन, आप इस आंतरिक ऐप साझाकरण का उपयोग इनएप अपडेट का परीक्षण करने के लिए कर सकते हैं: support.google.com/googleplay/android-developer/answer/…
उमंग कोठारी

कोई जवाब मिला?
मूवडे

इसके लिए कोई मान्य उत्तर मिला?
धवल कंसारा

कोई जवाब मिला, इसे कैसे हल करें? मुझे वही त्रुटि हो रही है।
आशीष अग्रवाल

जवाबों:


5

सबसे पहले , कृपया देखें कि आप प्ले लाइब्रेरी के नवीनतम संस्करण का उपयोग कर रहे हैं।

दूसरे , समझे गए तथ्य: जिस ऐप का आप परीक्षण कर रहे हैं, कृपया उसी पैकेज का नाम जांचें जो कि प्ले स्टोर पर उपलब्ध है।

उदाहरण:

आपके पास पैकेज नाम के साथ प्ले स्टोर पर एक ऐप है com.example.appलेकिन आप पैकेज नाम के साथ अपने ऐप का परीक्षण कर रहे हैं com.example.app.debug। आपको यह त्रुटि मिलेगी : ERROR_API_NOT_AVAILABLE

नोट: जब आप परीक्षण कर रहे हों तो आपको अपने ऐप का कम से कम एक संस्करण प्ले स्टोर पर रखना होगा।


1. प्ले लाइब्रेरी के नवीनतम संस्करण का उपयोग करना 2. पैकेज के नाम समान हैं, फिर भी इस मुद्दे का सामना कर रहे हैं :(
उमंग कोठारी

यह रिलीज़ बिल्ड के लिए ठीक काम करता है, लेकिन एक बार डिबग संस्करण पर केवल तभी चलता है जब आप अपना Play Store कैश और स्टोरेज साफ़ करते हैं। इसे फिर से चलाने के लिए, आपको फिर से Play Store के कैश और स्टोरेज को साफ़ करना होगा।
अब्दुल मतीन

1
ओह यह वास्तव में मेरे लिए काम किया। मैंने Play Store का कैश और स्टोर डेटा साफ़ किया। शुक्रिया @AbdulMateen
gmartinsnull

मुझे लगता है कि मुद्दा कंसोल खेलने के लिए अपलोड किए गए प्रमाण पत्र से भी संबंधित है। डीबग संस्करण के पास एक अलग प्रमाण पत्र है और यह "उत्पादन" के साथ मेल नहीं खाता है। तो FakeUpdateManager के साथ भी Api का परीक्षण करना असंभव है
निकोला गैलाज़ी

2

मेरा ऐप आज से पहले ठीक काम कर रहा था, लेकिन मुझे आज यह त्रुटि मिल रही है। एक अस्थायी वर्कअराउंड आपके Google Play Store के कैश और स्टोरेज को साफ़ करना है और फिर ऐप लॉन्च करने का प्रयास करना है। मेरे लिए, यह केवल पहली बार काम करता है, लेकिन बाद में विफल हो जाता है। ऐप को फिर से लॉन्च करने से पहले, मुझे फिर से कैश और स्टोरेज को साफ करना होगा। मुझे लगता है कि Google Play Store की तरफ से कुछ गड़बड़ है जिसके कारण यह समस्या हो रही है क्योंकि आज से पहले मेरे लिए सब कुछ ठीक था।


2

विप्लव ने जो सुझाव दिया उसके शीर्ष पर, समस्या आपके द्वारा डिवाइस पर इंस्टॉल किए गए संस्करण और प्ले स्टोर द्वारा वितरित किए जाने वाले संस्करण के बीच एक हस्ताक्षर बेमेल के कारण हो सकती है (यदि आप डिबग बिल्ड के साथ इसका परीक्षण करने का प्रयास करते हैं तो यह एक सामान्य मुद्दा है)। Https://developer.android.com/guide/playcore/in-app-updates#troubleshoot देखें

हाल ही में प्ले कोर एपीआई ने एक API_NOT_AVAILABLEत्रुटि लौटना शुरू कर दिया है यदि ऐप उपयोगकर्ता या हस्ताक्षरों के बेमेल नहीं है, जबकि इससे पहले यह एक सफल UPDATE_NOT_AVAILABLEटास्क को वापस करता था ।

सिफारिश है:

  • यदि आप कोटलिन एक्सटेंशन का उपयोग करते हैं, तो सुनिश्चित करें कि आप द्वारा फेंके गए अपवाद को पकड़ रहे हैं requestAppUpdateInfo
  • यदि आप PlayCore जावा का उपयोग करते हैं, तो सुनिश्चित करें कि आपके पास है onFailureListenerकि विफलताओं को संभालता हैgetAppUpdateInfo
  • डिबग बिल्ड का परीक्षण करने के लिए, आप आंतरिक अनुप्रयोग साझाकरण का उपयोग कर सकते हैं, जैसा कि यहां बताया गया है: https://developer.android.com/guide/playcore/in-app-updates#internal-app-sharing

स्रोत: मैं प्ले कोर टीम पर काम करता हूं


इंटरनल एप शेयरिंग के इस्तेमाल से मुझे बहुत मदद मिली। मैं इसकी सिफारिश कर सकता हूं। थोड़ा बोझिल, लेकिन यह सुनिश्चित करता है कि उनमें से कोई भी "मुझे कोई मतलब नहीं है" त्रुटि संदेश पॉप अप करता है।
मार्टिनजे

0

क्षण भर के लिए अस्थायी वर्कअराउंड OnCompleteListener:

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

बस PlayStore कैश को खाली करने से बचने के लिए हर बार मैं ऐप को फिर से लॉन्च करता हूं


1
शायद आप addOnFailureListener में ऐसा कर सकते हैं ? क्योंकि यह एक त्रुटि पर कहा जाता है। मेरे पास BaseActivity में InAppUpdate प्रक्रिया है और किसी भी गतिविधि के परिणाम को वापस देने के लिए एक इंटरफ़ेस का उपयोग करें जिसे इसकी आवश्यकता है।
स्कैडा

0

लंबे समय तक डिबगिंग के बाद। मैंने पाया, इसका कारण है कि हम सीधे मोबाइल में ऐप का परीक्षण कर रहे हैं। भले ही हम हस्ताक्षरित एपीके को उत्पन्न और उपयोग करते हैं, लेकिन यह त्रुटि होगी। इस त्रुटि से छुटकारा पाने का एकमात्र तरीका है, हमें Google Play से ऐप डाउनलोड करना होगा।

हम अपने ऐप को टेस्ट करने या बस प्रकाशित करने के लिए आंतरिक ऐप साझाकरण का उपयोग कर सकते हैं ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.