INSTALL_PARSE_FAILED_NO_CERTIFICATES त्रुटि क्या है?


163

मैं androidmanifest.xmlफ़ाइल को संपादित करके अपनी डिफ़ॉल्ट / मुख्य / स्टार्टअप (जो भी आप इसे कॉल करता हूं) गतिविधि को बदलने की कोशिश कर रहा था । सब मैंने किया android:nameसंपत्ति बदल गया था । हालाँकि, इसने पूरी तरह से पूरे ऐप को तोड़ दिया। जब मैं इसे स्थापित करने की कोशिश करता है तो विफल हो जाता है और पढ़ता है।

स्थापना त्रुटि: INSTALL_PARSE_FAILED_NO_CERTIFICATES

जब मैंने इसे अपनी पिछली स्थिति में बदलने की कोशिश की, तब भी यह मुझे वही त्रुटि दे रहा था ... मैंने क्या किया है?


किसी और के लिए: INSTALL_PARSE_FAILED_NO_CERTIFICATESत्रुटि है -103कि आप प्राप्त कर सकते हैं / के माध्यम से देख adb log( src ) जैसे। D/PackageInstaller(21320): Installation error code: -103

उत्तर सही है। और एक और कारण है जो यह त्रुटि देता है जब आपके पास अपने फोन में एक ही पैकेज नाम के साथ पुराना एप्लिकेशन इंस्टॉल होता है .. तो नया स्थापित करने से पहले अपने फोन से अनइंस्टॉल करें
Emre Kilinc Arslan

1
इस सवाल पर ठोकर खाने वाले किसी भी व्यक्ति को - नीचे दिए गए सभी उत्तरों को पढ़ें ! ऐसा लगता है कि यह त्रुटि संदेश "कुछ गलत है" प्रकार की त्रुटि से अधिक है। जिस कारण से मैंने इसका सामना किया, वह एक तरह से उत्तर देने के कारण था, सूची नीचे दिए जाने के कारण !!!!
जीएमसी

जवाबों:


56

क्या आपने AndroidManifest.xmlसीधे .apkफाइल में एडिट किया है ? यदि हां, तो यह काम नहीं करेगा।

प्रत्येक Android .apkपर हस्ताक्षर किए जाने की आवश्यकता है यदि वह फोन पर इंस्टॉल होने जा रहा है , भले ही आप मार्केट के माध्यम से इंस्टॉल नहीं कर रहे हों। विकास उपकरण एक विकास प्रमाणपत्र के साथ हस्ताक्षर करके इस पर काम करते हैं लेकिन.apk अभी भी हस्ताक्षरित है।

इसका एक उपयोग तो यह है कि एक डिवाइस बता सकता है कि क्या .apkएक स्थापित एप्लिकेशन के लिए एक वैध अपग्रेड है, क्योंकि यह सर्टिफिकेट एक ही होगा।

इसलिए यदि आप अपने ऐप में कोई बदलाव करते हैं .apkतो आपको इसे फिर से बनाने की आवश्यकता होगी ताकि यह ठीक से हस्ताक्षरित हो जाए।


महान धन्यवाद, क्या स्वतः प्रकट होने वाले पुनर्निर्माण के लिए एक बटन है?
mtmurdock

स्पंदन के साथ संघर्ष कर रहे लोगों के लिए, रन flutter cleanऔर रन / डीबग फिर से करें! यह ऑपरेशन ऊपर दिए गए समाधान के समान है क्योंकि यह बिल्ड फ़ोल्डर को साफ़ करता है और बिल्ड फ़ाइल को रन / डीबग पर फिर से बनाता है!
मनोज कुमार

183

मैंने पाया कि यह त्रुटि अब गलत साइनिंग कॉन्फिगर का उपयोग करते समय भी हो सकती है। जैसा कि यहां बताया गया है , एंड्रॉइड 7.0 एक नई हस्ताक्षर योजना, वी 2 पेश करता है । V2 स्कीम केवल JAR के बजाय संपूर्ण एपीके पर हस्ताक्षर करती है, जैसा कि V1 योजना में किया गया है। यदि आप केवल V2 के साथ साइन इन करते हैं, और प्री-7.0 लक्ष्य पर स्थापित करने का प्रयास करते हैं, तो आपको यह त्रुटि मिलेगी क्योंकि JAR स्वयं हस्ताक्षरित नहीं है और प्री -7.0 पैकेज मैनेजर V2 एपीके हस्ताक्षर की उपस्थिति का पता नहीं लगा सकता है।

सभी लक्ष्य प्रणालियों के साथ संगत होने के लिए, सुनिश्चित करें कि एंड्रॉइड स्टूडियो के जेनरेट हस्ताक्षरित APK संवाद में दोनों हस्ताक्षर संस्करण बॉक्सों की जांच करके एपीके को दोनों योजनाओं के साथ हस्ताक्षरित किया गया है:

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

यदि केवल 7.0 लक्ष्य अनुमानित हैं, तो V1 हस्ताक्षर शामिल करने की कोई आवश्यकता नहीं है।


5
आपने मेरा बहुत समय बचाया। एंड्रॉइड स्टूडियो को अपग्रेड करने के कारण परेशानियों का सामना करना पड़ा। यह उनमें से एक था। मुझे आश्चर्य है कि यदि SO Android विकास के आधे से अधिक के आसपास नहीं था, तो उसकी मृत्यु हो जाती। एंड्रॉइड स्टूडियो त्रुटियों के बारे में कोई सुराग नहीं देता है।
अतुल

4
सौभाग्य से मैंने Google Play पर रोल आउट करने से पहले एक पुराने डिवाइस पर अपनी रिलीज का परीक्षण किया। यदि सभी <Android 7.0 डिवाइस नए संस्करण को स्थापित करने में विफल रहे, तो यह एक आपदा होगी। जब आप एक एपीके रिलीज़ बनाने के लिए क्लिक करते हैं, तो दो संस्करणों के साथ वह चीज एक बड़ी लाल पॉप अप डायलॉग होनी चाहिए!
किरिल कर्माज़िन

इसके लिए धन्यवाद। यह जानने के लिए कि मेरी एपीके एंड्रॉइड 7 से नीचे क्यों नहीं चलेगी, लेकिन यह सिर्फ एक साधारण चेक बॉक्स था। गुस्सा कर देने वाला।
जापजोन

54

मैंने पाया कि यह मेरे JDK संस्करण के कारण था।

मुझे 'चींटी' से यह समस्या हो रही थी और यह प्रलेखन में उल्लिखित इस चेतावनी के कारण था:

http://developer.android.com/guide/publishing/app-signing.html#signapp

सावधानी: JDK 7 के रूप में, जब आप एक एपीके पर हस्ताक्षर करते हैं, तो आपको हस्ताक्षर को निर्दिष्ट करने और एल्गोरिदम (-sigalg और -digestalg) को पचाने के लिए आवश्यक डिफ़ॉल्ट डिफ़ॉल्ट एल्गोरिदम बदल गया है।

मेरे पास JDK है। 7. मेरे चींटी लॉग में, मैंने -b का प्रयोग क्रिया के लिए किया और यह दिखाया गया

$ ant -Dadb.device.arg=-d -v release install
[signjar] Executing 'C:\Program Files\Java\jdk1.7.0_03\bin\jarsigner.exe' with arguments:
[signjar] '-keystore'
[signjar] 'C:\cygwin\home\Chloe\pairfinder\release.keystore'
[signjar] '-signedjar'
[signjar] 'C:\cygwin\home\Chloe\pairfinder\bin\PairFinder-release-unaligned.apk'
[signjar] 'C:\cygwin\home\Chloe\pairfinder\bin\PairFinder-release-unsigned.apk'
[signjar] 'mykey'
 [exec]     pkg: /data/local/tmp/PairFinder-release.apk
 [exec] Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]

मैंने JAR को मैन्युअल रूप से हस्ताक्षरित किया और इसे ज़िप किया, लेकिन इसने थोड़ी अलग त्रुटि दी:

$ "$JAVA_HOME"/bin/jarsigner -sigalg MD5withRSA -digestalg SHA1 -keystore release.keystore -signedjar bin/PairFinder-release-unaligned.apk bin/PairFinder-release-unsigned.apk mykey
$ zipalign -v -f 4 bin/PairFinder-release-unaligned.apk bin/PairFinder-release.apk
$ adb -d install -r bin/PairFinder-release.apk
        pkg: /data/local/tmp/PairFinder-release.apk
Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]
641 KB/s (52620 bytes in 0.080s)

मैंने पाया कि यहाँ उत्तर दिया।

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

मुझे केवल इसे अनइंस्टॉल करने की जरूरत थी और फिर इसने काम किया!

$ adb -d uninstall com.kizbit.pairfinder
Success
$ adb -d install -r bin/PairFinder-release.apk
        pkg: /data/local/tmp/PairFinder-release.apk
Success
641 KB/s (52620 bytes in 0.080s)

अब मुझे केवल साइन इन करते समय उन विकल्पों का उपयोग करने के लिए build.xml को संशोधित करना होगा!

यहाँ ठीक है: C: \ Program Files \ Java \ android-sdk \ Tools \ ant \ build.xml

            <signjar
                    sigalg="MD5withRSA"
                    digestalg="SHA1"
                    jar="${out.packaged.file}"
                    signedjar="${out.unaligned.file}"
                    keystore="${key.store}"
                    storepass="${key.store.password}"
                    alias="${key.alias}"
                    keypass="${key.alias.password}"
                    verbose="${verbose}" />

3
JDK 7 भी मेरी समस्या थी। मैं आलसी था और JDK 7 की स्थापना रद्द की और JDK 6 स्थापित किया, ^ ^ भी काम किया। अन्य हैक समाधान लेकिन कम कट्टरपंथी दोनों को स्थापित किया जा सकता है लेकिन JAVA_HOME को JDK 6 में सेट करें और PATH में पहले JDK 6 का बिन पथ डालें।
Ixx

1
JDK 8 में भी यही समस्या है। PATH को बदलकर JDK 6 में काम किया। धन्यवाद लाइफसेवर!
क्रिस जुए

धन्यवाद! मेरा बाजार ऐप JDK6 के साथ संकलित किया गया था। जब मैंने JDK7 का उपयोग करके रिलीज़ कीस्टॉर के साथ ऐप संकलित किया और इंस्टॉल करने की कोशिश की, तो इसने मुझे यह समस्या दी।
सिलेरिया

28

अधिकांश समय इस त्रुटि का हल वास्तव में सरल है:

  1. अपने APK को अनइंस्टॉल करें
  2. अपने Android प्रोजेक्ट को साफ़ करें
  3. अपनी Android परियोजना बनाएँ
  4. अपना एपीके इंस्टॉल करें / चलाएं

मैंने 2,3,4 किया और वही त्रुटि प्राप्त की। अपने APK को अनइंस्टॉल करने से क्या मतलब है? मेरे उपकरण से? मुझे नहीं लगता कि यह कभी मेरे डिवाइस पर रहा है।
कर्टिस

मैं अचानक कुछ भी नहीं से इस त्रुटि को शुरू कर दिया, कोई नहीं तो समाधान लेकिन बस सफाई परियोजना काम किया। धन्यवाद।
pgcan

18

हल किया गया (मेरे लिए) कीटल में आर्ग का उपयोग कर

-sigalg MD5withRSA -keyalg RSA -keysize 1024

और jarsigner में उपयोग करना

-sigalg MD5withRSA -digestalg SHA1

समाधान मिला

एंड्रॉइड एपीके साइनिंग के लिए किस तरह के पिटफल्स मौजूद हैं?


धन्यवाद, मेरे लिए भी समस्या ठीक हो गई (मेरे पास जेडीके 7 है)।
एनरिको रोज़

मैंने इसे उसी तरह से तय किया है, क्योंकि मैं ऐप्लिसिटर टाइटेनियम का उपयोग करता हूं और एपीके पीढ़ी की स्क्रिप्ट तक पहुंच नहीं है। ध्यान दें कि इस समाधान के लिए निजी कुंजी के उत्थान (परिवर्तन!) की आवश्यकता है।
फेडेरिको

8

मैं भी इसी मुद्दे का सामना कर रहा था। पहले मैंने V2 का उपयोग कर निर्माण किया और ओएस 5.1 पर चलने वाले मोबाइल उपकरणों में स्थापित किया और मुझे भी यही मुद्दा मिला। लेकिन ओएस 7.0 पर चलने वाले टैबलेट पर बिल्ड ठीक काम कर रहा था। इसलिए मैंने V1 जार सिग्नेचर के साथ बिल्ड जेनरेट किया और यह दोनों डिवाइस पर ठीक काम कर रहा था।

निष्कर्ष: यदि आप Android OS 7.0 के नीचे डिवाइस का समर्थन कर रहे हैं। बिल्ड बनाने के लिए V1 जार हस्ताक्षर का उपयोग करें।


यदि आप OS 7.0 और नीचे चेक V2 का समर्थन कर रहे हैं, तो आप V 7.0 का चयन करें और यदि आप 7.0 और उससे अधिक के चलने वाले उपकरणों का समर्थन कर रहे हैं, तो दोनों को चेक करने की आवश्यकता नहीं है।
राजीव रंजन

7

मेरे मामले में, मैं रिलीज़ बिल्ड बना और चला सकता था, लेकिन INSTALL_PARSE_FAILED_NO_CERTIFICATESडिबग बिल्ड करने की कोशिश करते समय त्रुटि मिली ।

समाधान मेरी debug.keystoreफ़ाइल को हटाने और ADT को फिर से बनाने के लिए था। यह स्पष्ट रूप से समाप्त हो गया था।

एक बेहतर दीर्घकालिक समाधान स्पष्ट रूप से बनाना है debug.keystoreजो केवल एक वर्ष के बाद समाप्त नहीं होता है, इसके बजाय एडीटी को इसे बनाने दें। यहाँ यह करने की आज्ञा है:

keytool -genkey -v -keystore debug.keystore -alias androiddebugkey -storepass android -keypass android -keyalg RSA -validity 14000

संकेत दिए जाने पर, ये मान दर्ज करें:

  • पहला और अंतिम नाम: Android डीबग
  • संगठनात्मक इकाई: Android
  • संगठन का नाम: अज्ञात
  • शहर या इलाका: अज्ञात
  • राज्य या प्रांत: अज्ञात
  • देश कोड: यू.एस.

5

यह एक बदसूरत लेकिन तेज़ समाधान है: 7 के बजाय JDK 6 का उपयोग करें।

च्लोए के जवाब को पढ़ने के बाद, मैंने अपने JDK 7 को अनइंस्टॉल कर दिया (वर्तमान में इसे किसी भी तरह की आवश्यकता नहीं है) और JDK 6 स्थापित किया। एक बेहतर समाधान चींटी JDK 6 (7 की स्थापना रद्द किए बिना) का उपयोग करेगा। शायद इस संपत्ति को बदलना / स्थापित करना संभव है:

java.library.path

in.properties फ़ाइल। यह प्रोजेक्ट डायरेक्टरी (रूट) में है।

एंड्रॉइड JDK 7 किसी भी (केवल 6 या 5) के साथ काम नहीं करता है, इसलिए सुनिश्चित करें कि चींटी स्क्रिप्ट भी JDK 6 या 5 का उपयोग करती है, शायद एक अच्छा समाधान है।


5

इसकी वजह यह है कि पहले निर्मित बिल्ड और करंट v1 (जार सिग्नेचर) और v2 (फुल एपीके सिग्नेचर) के बीच सिग्नेचर वर्जन में संघर्ष चल रहा है,

जनरेट साइन एपीके संवाद के तहत उचित हस्ताक्षर संस्करण को टिक करने के लिए


4

हाल ही में मुझे एंड्रॉइड स्टूडियो 4.0 में अपग्रेड करते समय यह त्रुटि हुई थी। कारण यह था कि इस परियोजना में साइन इन करने वाले कॉन्फ़िगरेशन में V2 साइनिंग डिसेबल था build.gradle

समाधान को हटाने v2SigningEnabled falseया स्पष्ट रूप से इसे सेट करना था true, जो कि डिफ़ॉल्ट मूल्य है।

android {    
    signingConfigs {
        dev {
            v2SigningEnabled true
        }
     }
}

मैं एंड्रॉइड स्टूडियो 4.0 का उपयोग कर रहा हूं। लेकिन मेरे build.gradle फ़ाइल में "v2SigningEnabled" ऐसी कोई चीज नहीं है। मुझे क्या करना चाहिए?
नुवान हर्षकुमार पियाराथन्ना

3

नए एंड्रॉइड स्टूडियो संस्करणों में 3.2+, यदि आप releaseइंस्टॉल चलाने की कोशिश कर रहे हैं , और आपने किसी भी हस्ताक्षर कॉन्फ़िगरेशन को परिभाषित नहीं किया है, तो यह त्रुटि को दिखाएगा और स्थापित करना विफल हो जाएगा। आपको जो करने की आवश्यकता है वह या तो debugबिल्ड को चलाने या हस्ताक्षर कॉन्फ़िगरेशन (V1 या V2) को सही तरीके से सेट करने के लिए है।


3

अधिकांश उत्तर सत्य हैं। और कुछ अन्य कारण जो होते हैं

K आपकी मिनि sdk डिवाइस sdk से छोटी है।
► आपके डिवाइस में वही पैकेज नाम वाला पुराना एप्लिकेशन है


यह मेरा अनुभव था - मेरी परियोजना में मिनट एसडीके डिवाइस एसडीके से अधिक था। ऐसा इसलिए हुआ क्योंकि मैंने एंड्रॉइड स्टूडियो में प्रोजेक्ट बनाते समय सही चयन को "मिस" कर दिया था और गलती से मेरे एसडीके के रूप में अगले उच्च संस्करण का चयन कर लिया था, तब मेरा पुराना टैबलेट चल रहा था।
GMC

मेरे min sdk और डिवाइस sdk को बराबर करने से मेरी समस्या हल हो गई।
नुवान हर्षकुमार पियाराथन्ना

2

ऐसा हो सकता है यदि आप किसी .jarलाइब्रेरी में AndroidManifest.xmlफ़ाइल शामिल करने का प्रयास करते हैं ।

  • यदि यह शुद्ध जावा है तो सुनिश्चित करें कि आप इसे .jar निर्यात में शामिल नहीं करते हैं
  • यदि यह शुद्ध जावा नहीं है (अर्थात यह एक एंड्रॉइड प्रोजेक्ट है) तो आपको इसे लाइब्रेरी प्रोजेक्ट के रूप में शामिल करना होगा

2

साथ ही यू चेक कर सकते हैं

Project Structure-> Default Config->Signing Config

यू के बाद उस सभी को यू की जरूरत है


1

JAVA_HOMEJDK 5 या 6 (JDK 7 के बजाय) के लिए पर्यावरण चर सेट करना त्रुटि को ठीक करता है।


0

इस विषय पर कुछ समय और कई ऑनलाइन थ्रेड्स के बाद मैं अपनी परियोजना को ठीक करने में कामयाब रहा।

यह मुख्य रूप से अंतिम फाइलों को ध्यान में रख रहा है ( चित्र या लेआउट हो सकता है) ) जो आप डालते हैं। यदि आप उन्हें हटाते हैं, तो यह काम करेगा, और आप फिर से अपना प्रोजेक्ट बना सकते हैं।


0

मुझे अपने ग्रहण कंसोल में यह त्रुटि आ रही थी। यह पता चला है कि मेरे पास एक ही सामग्री के साथ दो जार थे लेकिन अलग-अलग नाम थे और वे एक-दूसरे के साथ संघर्ष कर रहे थे। मैंने उनमें से एक को हटा दिया और डिवाइस पर ऐप इंस्टॉल करने में कामयाब रहा।


0

मुझे यह त्रुटि मिल रही थी क्योंकि मैंने रिलीज़ किया था कि मेरी ant releaseअसफलता थी क्योंकि मैं डिस्क स्थान से बाहर चला गया था।


0

मुझे यह त्रुटि तब हुई जब मैंने Api v23 पर चलने वाले फ़ोन पर Android N पूर्वावलोकन के विरुद्ध निर्मित Xamarin प्रोजेक्ट को स्थापित करने का प्रयास किया। समाधान ऐसा नहीं करना है।


0

इस त्रुटि को प्राप्त करने का दूसरा तरीका है कि आप antmacOS का उपयोग कर निर्माण कर सकते हैं और Icon\rऐप के स्रोत ट्री में फाइंडर आइकन फ़ाइल ( ) लगा सकते हैं। ऐसा प्रतीत होता है कि यह jarsignerफ़ाइल नाम में गाड़ी की वापसी का सामना नहीं कर सकता है, हालांकि यह दावा करेगा कि यदि आप एपीके हैं तो यह हस्ताक्षर मान्य है -verify, यह हमेशा एक एपीके में होता है जो डिवाइस पर स्थापित नहीं होगा। विडंबना यह है कि, Google ड्राइव खोजक प्लगइन फाइंडर आइकन फ़ाइलों का एक बड़ा स्रोत है।

समाधान इस तरह के एक विनिर्देशक के साथ अपमानजनक फ़ाइलों (जो वैसे भी एपीके में बेकार हैं) को बाहर करने के लिए है fileset:

    <exclude name="**/Icon&#13;" />

0

यह समस्या तब होगी जब आप एपीके के बिना हस्ताक्षरित संस्करण को स्थापित कर रहे हैं। जांचें कि क्या आप सही एपीके इंस्टॉल कर रहे हैं।


0

मुझे आयनिक / विज़ुअल स्टूडियो कोड (डिवाइस पर रन एंड्रॉइड) की समस्या थी:

मैंने मोबाइल डिवाइस (सेटिंग / ऐप्स) पर ऐप को अनइंस्टॉल कर दिया है, त्रुटि हो गई है और ऐप शुरू हो रहा है।


0

यह आज मेरे लिए यह त्रुटि है क्योंकि मेरे पास 28 मिनट के एक एसडीके के साथ एक ऐप है और मैं 23 के एसडीके संस्करण के साथ एमुलेटर पर खेल रहा हूं। आमतौर पर यह संभव नहीं है (एएस ग्रे के प्ले बटन से बाहर), लेकिन आज ऐसा नहीं है बहुत।


0

सबसे पहले बस ऐसा करने की कोशिश करें:

  • ग्रैडल स्क्रिप्ट पर जाएं → bulid.gradle (मॉड्यूल: ऐप) → फिर आपको (minSdkVersion) मान बदलना होगा। एक उदाहरण के रूप में, यदि आप 26 का उपयोग करते हैं तो आप मान को कम करने का प्रयास कर सकते हैं, जैसे (minSdkVersion 20)
  • फिर कोशिश करें (अब सिंक करें)।

0

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

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