स्थापना रद्द किए बिना INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES से कैसे निपटें?


277

मैंने एक APK को पुन: स्थापित करने का प्रयास किया

$adb install -r new.apk

और यह त्रुटि दिखाता है:

Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]

एक उपाय यह है कि new.apk को अनइंस्टॉल और इंस्टॉल किया जाए, जो ठीक काम करता है।

लेकिन मैं सोच रहा हूं कि क्या मैं एक एपीके को फिर से बना सकता हूं और अनइंस्टॉल किए बिना फिर से इंस्टॉल कर सकता हूं। उदाहरण के लिए। AndroidManifest.xml में कुछ कॉन्फिग को बदलें, या एपीके इत्यादि पर हस्ताक्षर न करें।

यह बहुत अच्छा होगा अगर आप मुझे "INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES" का पूरा अर्थ बता सकें।


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

यह मेरे लिए काम नहीं करता है। ^ @ Mr.Derpin हालांकिton
Crime_Master_GoGo

यह तब भी हो सकता है जब ऐप को दो बार साइन किया गया हो और रिवर्स ऑर्डर में अपग्रेड साइन किया गया हो। इस बारे में अधिक जानकारी के लिए stackoverflow.com/a/13618894/5276890 देखें ।
रॉय फॉक

जवाबों:


319

इसका मतलब है कि आपके आवेदन की नई प्रति (आपके विकास की मशीन पर) आपके आवेदन की पुरानी प्रति (डिवाइस / एमुलेटर पर स्थापित) की तुलना में एक अलग हस्ताक्षर की हुई है। उदाहरण के लिए, यदि यह एक उपकरण है, तो आपने पुरानी प्रतिलिपि को किसी भिन्न विकास मशीन (उदाहरण के लिए, किसी अन्य डेवलपर की मशीन) पर डाल दिया होगा। या, पुराने को आपके उत्पादन कुंजी के साथ हस्ताक्षरित किया जाता है और नए को आपके डीबग कुंजी के साथ हस्ताक्षरित किया जाता है।


6
@atourney: आपको पिछली मशीन की कीस्टोर (जैसे, debug.keystore) को अपनी नई मशीन में कॉपी करना होगा ।
कॉमन्सवेयर

12
ध्यान दें कि debug.keystoreआपकी परियोजना निर्देशिका में नहीं है। यह सामान्य रूप से आपकी ~/.android/निर्देशिका में है। ( डेवलपर देखें
।android.com

3
डिबग पैकेज को कोई दूसरा नाम कैसे दे सकता है? (उदा। {PRODUCT_NAME} देव)
सैंडस्ट्रॉम

6
@ChristianBongiorno: अपने साइनिंग कीस्टोर्स (जैसे, debug.keystore) को सिंक्रनाइज़ करें । अपने मास्टर कीस्टोर होने के लिए एक को चुनें, इसे सभी अन्य डेवलपर मशीनों पर कॉपी करें, उनके मौजूदा कीस्टोर को बदल दें।
कॉमन्सवेयर

2
फ़ाइल को कॉपी करने के बाद अपने प्रोजेक्ट को फिर से बनाना न भूलें। मैंने फ़ाइलों को स्थानांतरित किया और डिवाइस पर एप्लिकेशन को फिर से भेजा (लेकिन यह अभी भी पुराने का उपयोग कर रहा था debug.keystore)। एक बार जब मैंने प्रोजेक्ट को बनाया (बिल्ड-> एंड्रॉइड स्टूडियो में पुनर्निर्माण) का उपयोग किया, तो चाबियाँ सिंक में थीं।
बेंजामिन कैसर

48

मैं एक नए Xoom पर परीक्षण करते हुए इसमें भाग गया। मैंने पहले मार्केटप्लेस से अपना ऐप इंस्टॉल किया था। बाद में मैं इस त्रुटि में भाग गया ऐप के एक नए संस्करण का परीक्षण करने की कोशिश कर रहा हूं।

मैंने इसे मार्केटप्लेस के माध्यम से इंस्टॉल किए गए ऐप को हटाकर (बस पकड़ कर ट्रैश में खींचें)। इसके बाद मैं किसी भी मुद्दे के बिना अपने विकास संस्करण को तैनात करने में सक्षम था।


12
हाँ, स्थापना रद्द करने से यह अनुमति समस्या हल हो जाएगी। मैं सोच रहा था कि क्या मैं इसे अनइंस्टॉल किए बिना हल कर सकता हूं
जॉनी

एक नया फोन मिला और इस बारे में भूल गया था। मैं इसे दो बार कैसे चिह्नित करूं :)
एंथनी हॉर्न

22

मेरे साथ यह तब हुआ जब टीम के एक अन्य डेवलपर ने हमारे ऐप को हार्डवेयर डिवाइस पर बनाया था जिसे मैं तैनात करने की कोशिश कर रहा था। हार्डवेयर से ऐप को अनइंस्टॉल करने से मेरी समस्या ठीक हो गई।


16
महान! आज्ञा के बाद काम किया adb uninstall <package name>। धन्यवाद।
पॉल

मेरे पास एक अधिक अनूठा मामला था, लेकिन इस जवाब से समाधान निकल गया। मेरे पास स्थानीय रूप से कॉर्डोवा सीएलआई के माध्यम से एक ऐप इंस्टॉल किया गया था और एक पीजी बिल्ड से भी इंस्टॉल किया गया था। त्रुटि दूर होने के लिए मुझे दोनों ऐप्स को अनइंस्टॉल करना पड़ा।
डेमिट्री

@Paul योर एक्सेलेंसी - किंग पॉल I, जबकि मैं मूल प्रश्नकर्ता नहीं हूं, आपकी आज्ञा ने मेरे लिए काम किया (और इस बात पर कोई संदेह नहीं है कि दूसरों ने आपकी टिप्पणी को कैसे गलत ठहराया)। क्या मैं आपको सुझाव दे सकता हूं कि उत्तर के रूप में पोस्ट करें?
बार्लोप

1
@barlop: मैंने केवल दूसरों के लिए अधिक दृश्यमान होने के लिए आदेश के साथ एक उत्तर पोस्ट किया है जो इस मुद्दे का सामना भी कर सकता है। धन्यवाद।
पॉल

3
मुझे समझ में नहीं आ रहा है कि इस उत्तर में क्यों बदलाव है। वह स्पष्ट रूप से कहते हैं, "बिना किसी चीज के"! -
ईसाई

20

यह adb का उपयोग करके डिवाइस से ऐप को अनइंस्टॉल करने का कमांड है:

adb uninstall <package name>

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

2
मुझे समझ में नहीं आ रहा है कि इस उत्तर में क्यों बदलाव है। वह स्पष्ट रूप से कहते हैं, "बिना किसी चीज के"!
ईसाई

असंगत प्रमाण पत्र के साथ पैकेज की जगह के लिए कोई रात का झंडा नहीं है, है ना? सुरक्षा का इरादा?
जॉनीटेक्स

9

मूल एपीके को अनइंस्टॉल करने के बाद भी मुझे यह त्रुटि मिली, जो कि रहस्यमय था। अंत में मुझे एहसास हुआ कि मैंने अपने Nexus 7 पर कई उपयोगकर्ताओं को परीक्षण के लिए सेट किया था और यह ऐप अभी भी अन्य उपयोगकर्ताओं में से एक के लिए इंस्टॉल किया गया था। एक बार जब मैंने सभी उपयोगकर्ताओं के लिए इसे अनइंस्टॉल कर दिया तो त्रुटि चली गई।


5

मैंने अपडेट को कोड करते समय पैकेज का नाम बदल दिया ताकि मैं अपने डिवाइस पर एक्लिप्स के माध्यम से डिबग कर सकूं, जो पुराने संस्करण को इंस्टॉल किए बिना हटा दिया गया था। पुनर्स्थापना का प्रयास करते समय मैं जिस पैकेज के नाम का उपयोग कर रहा था, उसे पुनः प्राप्त किए बिना, मुझे यही त्रुटि मिली। समान पैकेज नाम का उपयोग करके पुनर्स्थापना सफल रही।


3

डिवाइस से पुराने बिल्ड को हटा दें और उसी को पुनर्स्थापित करें। क्योंकि device.keystore पहले से ही डिवाइस में मौजूद है इसलिए केवल बिल्ड को अनइंस्टॉल करें और APK thats सभी को फिर से इंस्टॉल करें।

धन्यवाद


हां, यह बेहतर और स्पष्ट जवाब है कि कॉमन्सवेयर का जवाब। धन्यवाद
tres.14159

3

मुझे एक अन्य उपयोग के मामले का सामना करना पड़ा जहां मुझे समान त्रुटि मिली। जब पहली बार मुझे त्रुटि मिली, तो मैं घबरा गया, और हटा दिया /data/data/{package.name} उसके बाद मैंने कोशिश की, और मेरी समस्या अभी भी मौजूद थी। फिर मैंने अनइंस्टॉल करने की कोशिश की, यह विफल रहा।

मैंने तब /system/app(आवश्यक रूट एक्सेस) में मौजूद एपीके फ़ाइल को हटा दिया , और अनइंस्टॉल करने की कोशिश की और यह सफल रहा।

उसके बाद मैंने एपीके को फिर से इंस्टॉल करने की कोशिश की, इसने काम किया।


1

इसके लायक क्या है, मैं अपने कॉर्डोवा प्रोजेक्ट में एक नया प्लगइन जोड़ने के बाद इस समस्या में भाग गया। मैं USB के माध्यम से डिवाइस पर सीधे कॉर्डोवा बनाता और स्थापित करता रहा था।

मैंने इसे डिवाइस से ऐप को अनइंस्टॉल करके तय किया और अगली तैनाती पर कोई समस्या नहीं थी।


1

यदि आप आउटपुट विंडो में त्रुटि "विफलता [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]" के साथ एक एन्डिड डिवाइस या एमुलेटर के लिए एक असफल तैनाती का सामना करते हैं, तो बस डिवाइस या एम्यूलेटर और रीडेप्लो पर मौजूदा ऐप हटा दें। डीबग बिल्ड डीबग प्रमाणपत्र का उपयोग करेगा, जबकि रिलीज़ बिल्ड आपके कॉन्फ़िगर किए गए प्रमाणपत्र का उपयोग करेगा। यह त्रुटि बस आपको बता रही है कि डिवाइस पर इंस्टॉल किए गए ऐप का प्रमाणपत्र आपके द्वारा इंस्टॉल किए जाने के प्रयास से भिन्न है। गैर-विकास (ऐप स्टोर) परिदृश्यों में, यह डिवाइस पर इंस्टॉल करने के लिए दूषित या अन्यथा संशोधित एप्लिकेशन का संकेतक नहीं हो सकता है।


0

ऊपर से मेरे लिए कुछ भी काम नहीं आया। मेरे लिए समस्या यह थी कि मेरे पास Android-support-v7-appcompat के लिए मेरे जावा बिल्ड पथ में गलत स्रोत था। जब आप प्रोजेक्ट> बिल्ड पाथ> कंफिगर बिल्ड पाथ> पर जाते हैं। स्रोत टैब के तहत सुनिश्चित करें कि आपके पास android-support-v7-appcompat / gen, android-support-v7-appcompat / libs और android-support-v7-appcompat / src है और कुछ नहीं। ओके पर क्लिक करें और यह काम करना चाहिए।


0

मुझे आज भी वही त्रुटि मिली है, लेकिन समस्या बिल्कुल वैसी नहीं थी। मैं VirtualBox में इंस्टॉल किए गए Android के साथ ADB का उपयोग कर रहा हूं । मैंने अपने ऐप के विभिन्न संस्करणों (हस्ताक्षरित / हस्ताक्षरित, डिबग / रिलीज़ मोड) को स्थापित करने की कोशिश की और दो त्रुटियों को वैकल्पिक रूप से प्राप्त किया: INSTALL_FAILED_UID_CHANGEDऔर INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES

अब, जब /data/data/{package.name}मैं देख रहा था , तो मुझे एप्लिकेशन की स्थापना रद्द करने के बाद भी फ़ाइलों का एक समूह मिला। मैंने rm -rfसफलता के बिना उनकी कोशिश की : मुझे I / O त्रुटियां मिलीं।

इसका समाधान यह था:

  • VM को बंद करें
  • VDI छवि माउंट करें vdfuse(पढ़ें / लिखें)
  • के Partition1साथ छवि फ़ाइल को सुधारेंe2fsck
  • VM को पुनरारंभ करें और पुनः आरंभ करें

0

मेरे पास एक ही समस्या थी जब तक मुझे एहसास हुआ कि मेरे पास सिम्युलेटर चल रहा था और एडीबी उस पर स्थापित करने की कोशिश कर रहा था


0

चूंकि सत्यापन पैकेज के नाम पर आधारित है, आप अपने config.xml या प्रकट फ़ाइल को अपने इच्छित दूसरे नाम के अंदर पैकेज का नाम बदल सकते हैं।

अपना ऐप प्रकाशित करते समय नाम वापस बदलना न भूलें !


0

मुझे यह समस्या आई थी कि मैं Genymotion पर gradle task connectedDebugAndoidTest(or connectedAndroidTest) निष्पादित करने की कोशिश कर रहा था । इसे सामान्य एमुलेटर पर चलाने से समस्या हल हो गई।


मुझे भी यही स्थिति (जीनोमिशन के साथ परीक्षण) पर मिल रही थी। पता चलता है कि यह परीक्षण पैकेज के लिए हस्ताक्षर के साथ संघर्ष था। परीक्षण पैकेज को हटाने से समस्या हल हो गई।
D-C0d3r

0

मुझे लगता है, आपका ऐप अन्य खाते द्वारा इंस्टॉल किया गया है। (एकाधिक खाता मोड सुविधा) आप सेटिंग> ऐप्स> "ऐप नाम"> सेटअप की स्थापना रद्द कर सकते हैं

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