Android एमुलेटर: इंस्टॉलेशन त्रुटि: INSTALL_FAILED_VERSION_DOWNGRADE


142

मैं वर्तमान में एक छोटे से Android एप्लिकेशन को संकलित करने और परीक्षण करने की कोशिश कर रहा हूं।

मैं ग्रहण का उपयोग कर रहा हूं, और एसडीके 4.2 (एपी स्तर 17) स्थापित है। मैंने सेट कर दिया है

<uses-sdk android:targetSdkVersion="17" android:minSdkVersion="8" />

हालाँकि मैंने विभिन्न मूल्यों (यानी 17/17) की भी कोशिश की है।

मैं किसी भी GoogleAPI फ़ंक्शंस का उपयोग नहीं करता, और न ही मैं ऐसे फ़ंक्शंस का उपयोग करता हूं जो API Level 8 में उपलब्ध नहीं हैं। या कम से कम मुझे उस संबंध में कोई कंपाइल एरर या चेतावनी नहीं मिलती है।

जब मैं प्रोजेक्ट संकलित करता हूं और इसे एंड्रॉइड 2.2.1 पर चलने वाले वास्तविक डिवाइस पर चलाता हूं, तो एप्लिकेशन ठीक चलता है। हालाँकि जब मैं एंड्रॉइड 4.2 के साथ एक एमुलेटर (एंड्रॉइड वर्चुअल डिवाइस) पर एप्लिकेशन चलाने की कोशिश करता हूं, तो Api Level 17 मुझे निम्न त्रुटि मिलती है:

[2012-12-10 21:10:29 - SoftKeyboard] Installation error: INSTALL_FAILED_VERSION_DOWNGRADE
[2012-12-10 21:10:29 - SoftKeyboard] Please check logcat output for more details.
[2012-12-10 21:10:29 - SoftKeyboard] Launch canceled!

Logcat हालांकि खाली है। मेरे पास वास्तव में कोई सुराग नहीं है, इस त्रुटि का क्या मतलब है ...

जवाबों:


353

इसका मतलब है कि आप उसी पैकेज के साथ एक ऐप इंस्टॉल करने की कोशिश कर रहे हैं, जो ऐप पहले से ही एमुलेटर पर स्थापित है, लेकिन आप जिसे इंस्टॉल करने का प्रयास कर रहे हैं, उसमें कम वर्जनकोड (आपके वर्जन नंबर के लिए पूर्णांक मान) है।

आपने कोड की एक अलग प्रतिलिपि से स्थापित किया हो सकता है, जहां संस्करण संख्या उस कॉपी से अधिक थी जो आप अभी काम कर रहे हैं। या तो मामले में:

  • वर्तमान में स्थापित प्रति की स्थापना रद्द करें

  • या अपने फोन की सेटिंग> एप्लिकेशन प्रबंधक को इंस्टॉल किए गए एप्लिकेशन के लिए संस्करण संख्या निर्धारित करने के लिए खोलें, और <manifest android:versionCode AndroidManifest में अपने उच्च होने के लिए बढ़ाएँ।

  • या https://stackoverflow.com/a/13772620/632951


1
धन्यवाद! यह बिल्कुल ऐसा था - मैं एक पुराने एसडीके से सॉफ्टकीबोर्ड उदाहरण से अवगत कराया, और ऐसा लगता है कि एक सॉफ्टकीबोर्ड उदाहरण पहले से ही स्थापित है (डिफ़ॉल्ट रूप से?) एमुलेटर उपकरणों में (लेकिन एक अलग, बाद के संस्करण में)। मेरे आवेदन का नाम बदलने के बाद सब कुछ अपेक्षित था ...
ndbd

2
@Alexander: -d ध्वज को शामिल करने के लिए क्या आप इस उत्तर को अपडेट कर सकते हैं?
डेविड एल्व्स

8
ऐप को अनइंस्टॉल करने की जरूरत नहीं है। झंडे का उपयोग करें: -r -d इन झंडों का अर्थ है कि पुनः स्थापित और डाउनग्रेड करें
पेट्र्सिन

1
@petrsyn: मैं इन झंडों को ग्रहण में कहाँ रखूँ?
वायलेट जिराफ

2
@ वायलेटगिरिफ़ का उपयोग कमांड लाइन में किया जाता है: adb install -r -d Application.apk
petrsyn

61

आप -dadb install में झंडा जोड़ने पर भी विचार कर सकते हैं । इस त्रुटि को नजरअंदाज करना चाहिए।

adb install -r -d abc.apk

8
अनिर्दिष्ट लेकिन काम करने के लिए प्रकट होता है। मुझे इसे -d के रूप में अलग से लिखना था, -r as -rd के साथ मिलाने से काम नहीं चला।
1925 में मर्सिथ

3
यह अब प्रलेखित है -d: allow version code downgrade:। फिर भी इससे अलग करने की आवश्यकता है-r
समझदार

1
डॉक्स (2020) से: -d: allow version code downgrade (debuggable packages only)
Alex.K.

30

सबसे पहले अपने एप्लिकेशन को एमुलेटर से अनइंस्टॉल करें:

adb -e uninstall your.application.package.name

फिर एप्लिकेशन को फिर से स्थापित करने का प्रयास करें।


8
या एक जुड़े हुए भौतिक उपकरण के लिए adb -s DEVICESERIALNUMBER uninstall your.application.package.name, जहां DEVICESERIALNUMBERउपयोग करके पाया जा सकता है adb devices -l
जोएल पुर्रा

यदि आप किसी एप्लिकेशन को डीबग करना चाहते हैं तो एक अनावश्यक कदम की तरह लगता है।
इगोरगानपोलस्की

8

यह मेरे प्रोजेक्ट में हो रहा था क्योंकि मैं संस्करण कोड सेट करने के लिए XML संसाधन का उपयोग कर रहा था।

AndroidManifest.xml:
android:versionCode="@integer/app_version_code"

app.xml:
<integer name="app_version_code">64</integer>

adbहालांकि, इसके पूर्व संस्करणों में कोई समस्या नहीं थी , हालांकि, platform-toolsr16 के रूप में यह अब उचित पूर्णांक के लिए हल नहीं किया जा रहा है। आप या तो री-इंस्टॉल को बलपूर्वक प्रयोग कर सकते हैं adb -rया प्रकट में शाब्दिक रूप से पूरी तरह से समस्या से बच सकते हैं:

android:versionCode="64"

मेरे लिए यह समस्या थी, और मैं मानता हूं कि यह संस्करणकोड को ठीक से हल नहीं कर रहा है, यहां तक ​​कि इसे बढ़ाकर (पूर्व: 65) INSTALL_FAILED_VERSION_DOWNGRADE से बचने नहीं है
स्टेन कुर्दिज़िल

5

यह तब हो सकता है जब प्ले स्टोर से एक हस्ताक्षरित रिलीज़ एपीके के शीर्ष पर एक डिबग / अहस्ताक्षरित APK स्थापित करने की कोशिश कर रहा है।

H:\>adb install -r "Signed.apk"
2909 KB/s (220439 bytes in 0.074s)
        pkg: /data/local/tmp/Signed.apk
Success

H:\>adb install -r "AppName.apk"
2753 KB/s (219954 bytes in 0.078s)
        pkg: /data/local/tmp/AppName.apk
Failure [INSTALL_FAILED_VERSION_DOWNGRADE]

इसका समाधान अनइंस्टॉल करना है और फिर इसे IDE से फिर से इंस्टॉल या रन करना है।


मैं नीच नहीं हूं, लेकिन मुझे लगता है कि यह एकमात्र कारण नहीं है कि ऐसा क्यों हो सकता है।
विकारी

3

INSTALL_FAILED_VERSION_DOWNGRADE

सभी Android ऐप्स का पैकेज नाम होता है। पैकेज का नाम विशिष्ट रूप से डिवाइस पर ऐप की पहचान करता है। यदि डिवाइस पर पहले से इंस्टॉल किए गए एप्लिकेशन के समान नाम है तो यह त्रुटि दिखा रहा है।

  1. आप अपने डिवाइस से एप्लिकेशन को पहले अनइंस्टॉल कर सकते हैं और फिर नए सिरे से इंस्टॉल कर सकते हैं।
  2. आप बस एक नया संस्करण जारी होने पर हर बार संख्या बढ़ा सकते हैं

1
आप सही हैं वर्जनकोड प्रत्येक रिलीज पर बढ़ाया जाना चाहिए। हालांकि, रिलीज से पहले विकास के समय पर नहीं। साथ ही, आपको पहले से इंस्टॉल किए गए APK (बिना अनइंस्टॉल किए) के शीर्ष पर एक ही संस्करणकोड के साथ एक APK स्थापित करने में सक्षम होना चाहिए। मेरे कूबड़ की समस्या थी संसाधन संदर्भित
संस्करणकोड

3

मार्शमैलो में, मुझे यह त्रुटि मिली,

Installation error: INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE
Please check logcat output for more details.
Launch canceled!

समाधान की तलाश में मैं यहां आया और खोजा। मैंने एप्लिकेशन को हटा दिया है लेकिन अभी भी नेक्सस 6 में यह समस्या है। बाद में पाया कि,

Settings > Apps > [My app name] have to removed for all user. 

2

Sdk src कोड के अनुसार ... \ android-22 \ android \ content \ pm \ PackageManager.java से

/**
 * Installation return code: this is passed to the {@link IPackageInstallObserver} by
 * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
 * the new package has an older version code than the currently installed package.
 * @hide
 */
public static final int INSTALL_FAILED_VERSION_DOWNGRADE = -25;

यदि नए पैकेज में वर्तमान में स्थापित पैकेज की तुलना में पुराना संस्करण कोड है।


हालांकि एक ही संस्करण के साथ नहीं होना चाहिए
स्टेन कुर्दिज़िल

2

मुझे वही समस्या हो रही थी। जब मैंने अपने एंड्रॉइड डिवाइस में एमुलेटर नहीं चलाने का प्रयास किया तो मुझे त्रुटि हो रही थी ।

sudo ionic run android 

मैं इसे चलाकर ठीक करने में सक्षम हूं

adb uninstall com.mypackage.name

2

आप यह कोशिश कर सकते हैं: adb install -r -d -f your_Apk_path


1

मेरे साथ यह तब हुआ जब मैंने एक एंड्रॉइड स्टूडियो ऐप को ग्रहण में आयात किया।

मुझे लगा कि एंड्रॉइड स्टूडियो प्रोजेक्ट से आयात होने पर andoridmanifest.xml फ़ाइल को थोड़ा संशोधित करना होगा। मैंने एक नया परीक्षण प्रोजेक्ट बनाया, और इसे मिलान करने के लिए शीर्षकों पर कॉपी किया। आवाज, मुद्दा हल


1

यह त्रुटि मेरे एंड्रॉइड प्रोजेक्ट में कई प्रकार की gfx फ़ाइलों के साथ दिखाई देती है। अंत में मैनिफ़ेस्ट फ़ाइल में कोई परिवर्तन स्वीकार नहीं किया गया था।

क्योंकि Android उपकरणों के बारे में मेरे ज्ञान की कमी को मैं भूल जाता हूं कि मेरे परीक्षण उपकरण में एक दूसरा उपयोगकर्ता है। इस उपयोगकर्ता के पास मेरे ऐप का एक स्थापित संस्करण भी है, इसलिए मुझे इस उपयोगकर्ता खाते के लिए ऐप को भी हटाना होगा और यह काम करेगा।


0

जो चीज मुझे मारती रही, वह यह थी कि मुझे नहीं पता था कि यह ऐप मेरे गेस्ट अकाउंट के लिए इंस्टॉल किया गया था (हालाँकि मैंने इसे अन्य अकाउंट्स के लिए अनइंस्टॉल कर दिया था ..)

इसलिए मैंने ऐप मैनेजर में ऐप खोजा, और सभी उपयोगकर्ताओं के लिए बस अनइंस्टॉल पर क्लिक किया

यहां छवि विवरण दर्ज करें


0

बस पिछले Apk को अनइंस्टॉल करें और अपडेट किया गया एपीके इंस्टॉल करें


0

यह एक वास्तविक ऐप संस्करण समस्या के बजाय Google Play Services निर्भरता के साथ एक समस्या हो सकती है।

कभी-कभी, ऐसा नहीं है कि:

a) एप्लिकेशन का कोई मौजूदा संस्करण इंस्टॉल किया गया है, नया है या नहीं b) डिवाइस पर किसी अन्य उपयोगकर्ता पर इंस्टॉल किए गए एप्लिकेशन का मौजूदा संस्करण है

तो त्रुटि संदेश सिर्फ फर्जी है।

मेरे मामले में, मेरे पास था:

implementation 'com.google.android.gms:play-services-maps:16.0.0'
implementation 'com.google.android.gms:play-services-location:16.0.0'
implementation 'com.google.android.gms:play-services-gcm:16.0.0'

लेकिन जब मैंने कोशिश की

implementation 'com.google.android.gms:play-services-maps:17.0.0'
implementation 'com.google.android.gms:play-services-location:17.0.0'
implementation 'com.google.android.gms:play-services-gcm:17.0.0'

मुझे androidX संबंधित त्रुटियाँ मिलीं, क्योंकि मैंने अभी तक androidX में अपग्रेड नहीं किया था और ऐसा करने के लिए तैयार नहीं था। मैंने पाया कि नवीनतम 16.xy संस्करण काम करते हैं और मुझे त्रुटि संदेश नहीं मिलता है। इसके अलावा, मैं बाद में इंतजार कर सकता हूं जब मैं तैयार हूं, androidX में अपग्रेड करने के लिए।

implementation 'com.google.android.gms:play-services-maps:16.+'
implementation 'com.google.android.gms:play-services-location:16.+'
implementation 'com.google.android.gms:play-services-gcm:16.+'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.