विफलता [INSTALL_FAILED_INVALID_APK]


85

जब मैं एक प्रोजेक्ट को चलाने के लिए क्लिक करता हूँ, जिसे मैंने अभी-अभी एंड्रॉइड स्टूडियो 0.2.10 में बनाया है और अपने एंड्रॉइड का चयन करता हूं (यूएसबी द्वारा डीबग के साथ यूएसबी द्वारा जुड़ा हुआ) मुझे यह त्रुटि मिलती है:

Waiting for device.
Target device: 0123456789ABCDEF
Uploading file
    local path: /Users/Rui/AndroidStudioProjects/FirstAppProject/FirstApp/build/apk/FirstApp-debug-unaligned.apk
    remote path: /data/local/tmp/rui.firstapp
Installing rui.firstapp
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/rui.firstapp"
pkg: /data/local/tmp/rui.firstapp
Failure [INSTALL_FAILED_INVALID_APK]

किसी भी विचार यह क्या हो सकता है?


मेरे फोन का चयन करें ... !! क्या आपका मतलब एमुलेटर है ... ??
गोकुल नाथ केपी

1
नहीं, USB पर डिबग के साथ मेरा Android।
रुईग सिप २ R

क्या आपने सुनिश्चित किया है कि ऐप आपके द्वारा उपयोग किए जा रहे डिवाइस के अनुकूल है? अपनी अभिव्यक्ति में मूल्यों MinSDKऔर TargetSDKमूल्यों की जाँच करें । क्या आपने इसे एक एमुलेटर में स्थापित करने की कोशिश की है? यह संकीर्ण हो जाएगा कि समस्या एपीके या आपके डिवाइस के साथ है या नहीं।
free3dom

जवाबों:


153

मुझे यह एंड्रॉइड स्टूडियो में मिल रहा था और मैंने इसे ठीक करने के लिए किया था "Build" > "Clean Project"


8
यदि यह अभी भी काम नहीं कर रहा है, तो स्वच्छ परियोजना के बाद बिल्ड -> पुनर्निर्माण परियोजना काम करेगी।
पे

मुझे यह केवल ५.४.१ से ५.६.१ तक के एक अद्यतन के साथ मिला है - निश्चित नहीं है कि यह किस कारण से विचित्रता है, लेकिन बड़े पैमाने पर उन्नयन निश्चित रूप से हो सकता है। एक वैकल्पिक कमांड-लाइन समाधान ./gradlew cleanआपके सामान्य बिल्ड कमांड द्वारा पीछा किया जाता है
माइक हार्डी

18

बस फ़ोल्डर में पुराने एपीके एंड्रॉइड / ऐप / बिल्ड / आउटपुट / एपीके / डिबग / ऐप-डीबग.पेक को हटा दें। बस इतना ही। अपनी कोडिंग का आनंद लें ...


आपका स्वागत है @VenkateshMogili
महेन्द्रन

1
rm -fr android/app/build/outputs/apk/debug/
felansu

15

मुझे एक बार इसी तरह का मुद्दा मिला, जो मैंने देखा था, मेरे Androidmanifest.xml में पैकेज का नाम एक रिक्त स्थान चरित्र के साथ शुरू किया गया था। like " com.example.test" instead of "com.example.test"

मैंने अपनी मैनिफ़ेस्ट फ़ाइल से ऐसे सभी अमान्य रिक्त स्थान हटा दिए, इससे मेरी समस्या हल हो गई

संपादित करें 1 : पैकेज नाम में '-' भी कुछ Android संस्करणों पर एक ही समस्या का कारण बनता है


1
वाह! मैंने सोचा था invalidate cache and restartकि एक साफ निर्माण मजबूर करेगा, जाहिर है यह नहीं है।
गेब्रियलऑशिरो

10

मुझे भी यही समस्या थी लेकिन किसी भी समाधान ने मेरे लिए काम नहीं किया। समस्या यह थी कि मेरे पास नहीं था मेरे पैकेज के नाम में विभाजक।
यानी अगर अपने पैकेज का नाम है my.packagename इसके ठीक, लेकिन यह नहीं हो सकता है सिर्फ mypackagename
इस बग रिपोर्ट से संकेत मिला है।

https://code.google.com/p/android/issues/detail?id=55841


9

अगर किसी को अभी भी समस्या हो रही है तो बिल्ड-> क्लीन प्रोजेक्ट फिर बिल्ड-> प्रोजेक्ट को अंत में ग्रैडल फाइल के साथ सिंक प्रोजेक्ट


8

इस समस्या को कैसे हल करें:

  1. इंस्टॉल RootExplorer
  2. tmpएसडी कार्ड पर नया फ़ोल्डर बनाएँ
  3. Tmp फ़ोल्डर पर लंबी प्रेस, और Linkइस फ़ोल्डर का चयन करें (मेनू में अंतिम विकल्प)
  4. नीचे जाएं /data/local/और CREATE LINKनीचे से बटन टैप करें

8

मेरे पास यह मुद्दा था और उपरोक्त किसी भी समाधान ने मेरे लिए काम नहीं किया।

किसी कारण से, मेरी /data/local/tmpनिर्देशिका पर अनुमति सही ढंग से सेट नहीं की गई थी (केवल रूट में rwx था)। मैंने ADB का उपयोग करके समस्या को ठीक किया (आपको एक रूट किए गए उपकरण की आवश्यकता होगी):

  1. अपने फोन को USB के माध्यम से कनेक्ट करें
  2. ADB का उपयोग करके लॉन्च करें adb shell
  3. का /data/localउपयोग करने के लिए ले जाएँcd /data/local
  4. रूट मोड का उपयोग करके स्विच करें su
  5. tmpका उपयोग कर निर्देशिका पर पढ़ने / लिखने / निष्पादित करने की अनुमति देंchmod 777 tmp
  6. डिस्कनेक्ट करें, एंड्रॉइड स्टूडियो को पुनरारंभ करें और डिवाइस में फिर से प्लग करें

7

इंस्टेंट रन को बंद करके मेरी समस्या हल हो गई। अब तक कोई स्पष्टीकरण नहीं जानते। एंड्रॉइड स्टूडियो 3.0 में माइग्रेट करने के बाद यह इस तरह की समस्या शुरू करता है। आशा है कि यह भविष्य में किसी की मदद करेगा।


6

जब मैंने इस मुद्दे का अनुभव किया, तो मेरे लिए जो तय किया वह यह सुनिश्चित कर रहा था कि AndroidManifest.xml पैकेज का नाम बिल्ड.ग्रेड ApplicationId के समान था।


3

मुझे इस त्रुटि का एक और कारण मिला। यदि आपने अपने डिवाइस एक्सेस / रूट / डेटा / लोकल / tmp की अनुमति बदल दी है, तो adb इसे अस्थायी फ़ाइल तक नहीं पहुँचा सकता है। समाधान sdcard पर "tmp" फ़ोल्डर बनाना है और इसे / डेटा / स्थानीय / (ADB शेल या रूट एक्सप्लोरर के माध्यम से) में सिमलिंक बनाना है।


मुझे विश्वास नहीं हो रहा था कि: किसी अन्य डिवाइस के साथ क्रॉस-चेक किया गया (सभी अनुमतियाँ समान थीं, मूल स्तर तक); अनुमतियों से भरा हुआ (उन्हें 777 भी बना दिया) - कोई रास्ता नहीं। तो क्या खोना है। सिमिलिंक की कोशिश की - वाह! काम करता है (+1)। मैं अब भी जानना चाहूंगा कि इसके पीछे क्या और क्यों है। यह मेरे मामले में इसे जड़ नहीं दे रहा था, लेकिन एडीबी डेमन को "असुरक्षित मोड" (यानी रूट अनुमतियों के साथ) में चला रहा था।
इज़्ज़ी

3

यदि आप android:extractNativeLibs="false"AndroidManifest फ़ाइल में लिखते हैं । फिर इसे बदल देंandroid:extractNativeLibs="true"


2

इससे मेरे मामले में मदद मिली:

Settings -> Apps -> Google Play Store -> Click "Enable" button.

वाह। धन्यवाद। मैंने GooglePlay को अक्षम कर दिया और ध्यान नहीं दिया कि यह मेरे मुद्दों का मूल कारण था।
W0rmH0le

2

मैंने सबसे ऊपर दिए गए समाधानों की कोशिश की (सरल वाले, उन लोगों को नहीं, जो चामोद की पेशकश करते हैं और आंतरिक पुस्तकालयों को बदल देते हैं) और उनमें से कोई भी काम नहीं करता है

आखिरकार मेरे लिए क्या काम किया गया: "स्वच्छ परियोजना" -> "परियोजना का पुनर्निर्माण" -> app संस्करण बदल दिया build.gradle अनुप्रयोग मॉड्यूल में नाम -> सिंक ग्रेड -> डिवाइस पर एप्लिकेशन चलाएँ


2

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


2

वीएस कोड संपादक के साथ स्पंदन परियोजनाओं के लिए, प्रोजेक्ट स्रोत फ़ोल्डर पर जाएं और "बिल्ड" फ़ोल्डर को हटा दें और डिबगिंग शुरू करें।


2

मुझे डैगर और कई मॉड्यूल वाले प्रोजेक्ट पर यह मुद्दा मिला। मेरे लिए क्या काम किया (उपर्युक्त में से कोई भी काम नहीं किया गया था) 1 के लिए था। खाली फ़ोल्डर 2 को खाली करें। खाली फ़ोल्डर को 3) परियोजना में। gradper.properties, mark org.gradle.caching = false 4) AS में कैश को संभवतः अमान्य करें। , साफ, पुनर्निर्माण

आप सिर्फ # 3 के साथ दूर हो सकते हैं, फिर साफ कर सकते हैं।

संपादित करें: हाल ही में मैं एएस को पुनरारंभ करके, फिर एक साफ कर रहा हूं, फिर से इसे स्थापित करने में सक्षम हो गया हूं।


अजीब। मैंने कुछ ऊपर की कोशिश की है। यह मेरे लिए काम किया है। यह Android विकास पागल हो रहा है। 30 सेकंड के लिए कोड और बिल्ड पाने के लिए 5 मिनट तक प्रतीक्षा करें
satyajit

@ सत्यजीत 5 मिनट!! मेरा 10 लेता है! यह एकमात्र ऐसा है जो लगातार मेरे लिए काम करता है।
डैन एंडरसन

मैं इसे ./gradlew installDebugकमांड लाइन से काम करने में सक्षम हूँ
satyajit

2

मेरे लिए इस समस्या का कारण मेरे ऐप के मॉड्यूल में से एक के लिए चुने गए गलत बिल्ड वेरिएंट थे। "बिल्ड वेरिएंट" टूल से, मैंने मॉड्यूल वेरिएंट का चयन किया, जो ऐप मॉड्यूल से मेल खाता था, और इसने मेरे लिए समस्या को ठीक किया।


1

मैं मैं संस्करण का नाम प्रत्यय जोड़ दिया है क्योंकि मेरी डीबग बिल्ड में एंड्रॉयड स्टूडियो पर इस समस्या थी -DEBUG और - समस्या थी।

केवल आपके संस्करण के नाम और एप्लिकेशन आईडी पर अक्षर, संख्या और बिंदु हैं


1

पर जाए Run/Debug Configurations

शीर्ष टैब से चलाएँ क्लिक करें> कॉन्फ़िगरेशन संपादित करें

  • मॉड्यूल: अपना ऐप चुनें
  • स्थापना विकल्प: डिफ़ॉल्ट एपीके तैनात करें
  • ठीक

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


0

मैं सिर्फ एक ही त्रुटि थी। मेरे पास ऐप आईडी में वर्ष 2015 था। मैंने 2015 को पंद्रह से बदल दिया और इसे हल कर दिया।

इसके अलावा, यदि आप एंड्रॉइड स्टूडियो का उपयोग करते हैं, तो आप कोशिश कर सकते हैं: टूल / एंड्रॉइड / सिंक प्रोजेक्ट ग्रैड फाइल्स के साथ


0

फोर्स एप्लिकेशन को डिवाइस सेटिंग्स में बंद करें।


0

मेरे पास यह मुद्दा था और उपरोक्त किसी भी समाधान ने मेरे लिए काम नहीं किया।

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

मैंने ADB का उपयोग करके समस्या को ठीक किया (आपको एक रूट किए गए उपकरण की आवश्यकता होगी):

  1. अपने फोन को USB के माध्यम से कनेक्ट करें
  2. एडीबी शेल का उपयोग करके एडीबी लॉन्च करें
  3. र का उपयोग करके रूट मोड पर जाएं
  4. sdcard में tmp फोल्डर बनाएं: mkdir / sdcard / tmp
  5. सीडी / डेटा / स्थानीय
  6. फ़ोल्डर को sdcard में लिंक बनाएँ: ln -s / sdcard / tmp tmp

0

इस विफलता के कई कारण प्रतीत होते हैं। मेरे लिए, मुद्दा यह था कि AndroidManifest फ़ाइल में मैंने 'उपयोग-लाइब्रेरी' टैग का उपयोग करके एक गैर-मौजूदा लाइब्रेरी (केवल इस विशेष डिवाइस में) को संदर्भित किया था। लाइब्रेरी को हटाने के बाद जो इस डिवाइस में एपीके नहीं था, ठीक से इंस्टॉल हो गया।


0

मैंने androidquickstart maven archetype का उपयोग किया है और उसी समस्या का सामना किया है:

मेरे पैकेज का नाम केवल androidquickstart था। सलाह के अनुसार पहले

  1. मैंने पैकेज को androidquickstart.test में बदल दिया है
  2. तो AndroidManifest.xml में मैं बदल गया है package="androidquickstart"करने के लिए package="androidquickstart.test"और तदनुसार एक्सएमएल के अन्य भागों से परीक्षण हटा दिया <activity android:name=".test.HelloAndroidActivity" >करने के लिए<activity android:name=".HelloAndroidActivity" >
  3. और जावा फाइलों में निश्चित पैकेज के मुद्दे (आईडीई द्वारा हाइलाइट)

0

आपके पैकेज के नाम में डॉट्स द्वारा संयुक्त शब्द शामिल होने चाहिए जैसे com.example या prashant.mydairy ..... अब इसे ठीक काम करना चाहिए

फ़ाइलें जहाँ आपको उर पैकेज का नाम अपडेट करना चाहिए, वे निम्न हैं: 1) घोषणापत्र फ़ाइल 2) ग्रेड फ़ाइल (मॉड्यूल ऐप्प): ApplicationId "package.name"


1
टिप्पणी होनी चाहिए
फुरकान

0

टास्कऑफिनिटी का नाम कम से कम एक होना चाहिए '।' विभाजक


0

यदि आपके पास डिवाइस कंसोल (एडीबी शेल) तक पहुंच है, तो निम्नलिखित की अनुमति बदलें:

  1. chmod 777 / डेटा /
  2. chmod 777 / data / local /
    आप /data/local/उस स्थिति में भी एपीके को कॉपी करने की कोशिश कर सकते हैं , सुनिश्चित करें कि सेट को एपीके के लिए सही अनुमतियाँ भी हैं।
  3. chmod 777 /data/local/myapk.apk अब आप एक इंस्टालेशन का प्रयास कर सकते हैं: pm install -r -d /data/local/myapk.apk (निरपेक्ष पथ पर ध्यान दें)

0

ऐसा लगता है कि डॉट अपराधी होने के बाद एक नंबर था।

मैं निम्नलिखित ApplicationId के साथ एक ही मुद्दा था

org.tony.stark.125jarvis

इसे बदलना

org.tony.stark.jarvis

मैं एंड्रॉइड डिवाइस पर एप्लिकेशन इंस्टॉल करने में सक्षम था।


0

यदि आपको यह त्रुटि प्राप्त कर सकते हैं minSdkVersionमें builde.gradleडिवाइस के Android संस्करण से भी बड़ा है। उस स्थिति में आपको संशोधित करना होगा minSdkVersion


0

AndroidManifest.xml में कोड हटाएं:

उपकरण: बदलें = "android: appComponentFactory" Android: appComponentFactory = ""

यह काम करता हैं।

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