ADB INSTALL_FAILED_TEST_ONLY के साथ विफल इंस्टॉल करें


202

मैं अपने डिवाइस के लिए एक APK स्थापित करने में समस्याएं आ रहा हूं।

adb install <.apk>

उपरोक्त कमांड का उपयोग करने से निम्नलिखित लाभ होते हैं:

5413 KB/s (99747 bytes in 0.017s)
        pkg: /data/local/tmp/AppClient.TestOnly.App3.apk
Failure [INSTALL_FAILED_TEST_ONLY]

इस मुद्दे पर क्या कारण हो सकता है पर कोई विचार?

यह निश्चित रूप से डिवाइस को पहचानता है। क्या यह एपीके के साथ एक मुद्दा हो सकता है?

जवाबों:


275

आप की तरह लग रहा अपने संशोधित करने की आवश्यकता AndroidManifest.xml
बदलें android:testOnly="true"करने के लिए android:testOnly="false"या इस विशेषता को हटा दें।

यदि आप विशेषता रखना चाहते हैं android:testOnlyजैसा कि trueआप विकल्प के pm installसाथ कमांड का उपयोग कर सकते हैं -t, लेकिन आपको pushपहले डिवाइस को एपीके की आवश्यकता हो सकती है ।

$ adb push bin/hello.apk /tmp/
5210 KB/s (825660 bytes in 0.154s)

$ adb shell pm install /tmp/hello.apk 
    pkg: /tmp/hello.apk
Failure [INSTALL_FAILED_TEST_ONLY]

$ adb shell pm install -t /tmp/hello.apk 
    pkg: /tmp/hello.apk
Success

मैं एक ही मुद्दे को पुन: पेश करने में सक्षम था और ऊपर ने इसे हल किया।

यदि आपकी एपीके डिवाइस के बाहर है (आपके डेस्कटॉप पर), तो नीचे कमांड यह करेगी:

$ adb install -t hello.apk

63
आपको धक्का और शाम को स्थापित करने की आवश्यकता नहीं है, आप adb स्थापित कमांड के बाद -t स्विच को निर्दिष्ट कर सकते हैं: adb install -t -r package.apk
marioc64

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

adb push bin/hello.apk /tmp/मेरे लिए काम नहीं करता है, adb push ./debug.apk /sdcard/temp/debug.apkकाम किया
HenderWD

adb install -t app/build/outputs/apk/usUnitedStates/debug/app-usUnited-debug.apkमेरे लिए काम किया।
सुलाव तिमसीना

धन्यवाद। इससे मेरी समस्या हल हो गई। मेरा ऐप एक सिस्टम ऐप था। इस प्रकार -f की जरूरत थी। -f: Install package on the internal system memory.
जूलियन

95

मुझे इसी तरह की समस्या थी Android Studio 3.0.0 Beta 7और अब मैं प्ले स्टोर पर प्रकाशित नहीं कर सकता था।

जैसा कि यहां कहा गया है: https://developer.android.com/studio/run/index.html

नोट: रन बटन testOnly = "true" के साथ एक एपीके बनाता है, जिसका अर्थ है कि एपीके को केवल adb (जिसे एंड्रॉइड स्टूडियो उपयोग करता है) के माध्यम से इंस्टॉल किया जा सकता है। यदि आप एक डिबग करने योग्य APK चाहते हैं, जिसे लोग बिना adb के इंस्टॉल कर सकते हैं, तो अपना डिबग वेरिएंट चुनें और बिल्ड> बिल्ड एपीके (s) पर क्लिक करें।

वही रिलीज़ बिल्ड के लिए जाता है, जिसके साथ Android Studio 3आपको Build > Build APK(s)एक गैर-परीक्षण योग्य रिलीज़ होने की आवश्यकता होती है APK जिसे आप स्टोर में सबमिट कर सकते हैं।


6
मुझे संदेह है कि अभी (अक्टूबर / नवंबर 2017) यहाँ आने वाले अधिकांश लोगों के लिए यह सही उत्तर है। एएस 3 से पहले, "रन" द्वारा निर्मित एपीके, एएस के बाहर भी इंस्टॉल करने योग्य था, नहीं यह नहीं है।
नोअट्टम

/: वहाँ अद्यतन है और वहाँ कुछ और ट्वीक है .. मुझे थोड़ी देर आंकड़ा करने के लिए इसे बाहर ले
रूबेन

61

जोड़े -tध्वज स्थापित करते हैं, नीचे दिए गए स्क्रीनशॉट पर के रूप में:

जवाब लाल बॉक्स में है


मैं जिस नमूना परियोजना का उपयोग करता हूं, वह 'com.android.tools.build:gradle:2.4.0-alpha7' संकलन करता है और एक स्थिर संस्करण के साथ संकलन नहीं करता है, केवल -t जोड़ने के रूप में मेरे लिए समस्या हल की गई है।
बुबागम

7
कृपया बताएं कि क्या -tकरता है।
rmtheis

3
अदब मदद में, आप देखेंगे कि -t का मतलब है कि परीक्षण पैकेज की अनुमति दें
xiaoyee

: आईडीई के शीर्ष पर मेक और भागो, डीबग बटनों के बीच - स्क्रीन मॉड्यूल लटकती मेनू पर विन्यास संपादित करें पर क्लिक के माध्यम से शुरू की है developer.android.com/studio/run/rundebugconfig.html
जीन बो

56

मेरे मामले में यह गलती अस्थिर प्रवण संस्करण में थी। बस एक स्थिर संस्करण का उपयोग करें ढाल (अल्फा नहीं, यहां तक ​​कि बीटा भी नहीं)। और यह मेरे लिए तय था


1
दिन बचा लिया! २.४.०-अल्फ़ा ३ से २.३.० तक के क्रमिक संस्करण को बदल दिया
रेव्ज़ मुरशेड

1
खून बह रहा किनारे से चिपके रहने की कीमत ... धन्यवाद!
रेयान आर।

क्या कोई भी पुष्टि कर सकता है कि एंड्रॉइड सेट करना: testOnly = "true" इसे अस्थिर ग्रेडल संस्करणों के लिए भी ठीक कर देगा?
जीपीएस

43

पूरे दिन खोज और ब्राउज़ करने के बाद, केवल एक ही काम जोड़ रहा है

android.injected.testOnly=false

to gradle.properties फ़ाइल


28

मैं एलीसी से सहमत हूं। 2.4 प्रिव्यू में अपना प्रोजेक्ट खोलने और फिर एंड्रॉइड स्टूडियो 2.3 में उसी प्रोजेक्ट को खोलने के बाद मुझे यही त्रुटि मिली

से इस लाइन को build.gradle में बदलकर समस्या को ठीक किया

classpath 'com.android.tools.build:gradle:2.4.0-alpha5'

सेवा

classpath 'com.android.tools.build:gradle:2.3.1'

18

एंड्रॉइड स्टूडियो 3.0 केवल एपीके का परीक्षण करता है।

मैंने एंड्रॉइड मैनिफ़ेस्ट के टैग में "android: testOnly" प्रॉपर्टी को जोड़कर समस्या हल की है।

 <application
    .....
    android:testOnly="false"
    android:theme="@style/AppTheme">

और फिर एंड्रॉइड स्टूडियो -3.0 मेनू द्वारा एपीके को जेनरेट करें : बिल्ड -> बिल्ड एपीके (s)

अधिक जानकारी: https://commonsware.com/blog/2017/10/31/android-studio-3p0-flag-test-online.html



11

पिछली पोस्ट में से कोई भी मेरी समस्या को हल नहीं करता है। यहाँ मेरे साथ क्या हो रहा है:
मैं "रन" बटन पर क्लिक करके सामान्य रूप से ऐप को एंड्रॉइड स्टूडियो से लोड करता हूं। जब आप ऐसा करते हैं, तो एंड्रॉइड एक ऐप बनाएगा जो डिबग के लिए अच्छा है लेकिन इंस्टॉल के लिए नहीं। यदि आप उपयोग करके स्थापित करने का प्रयास करते हैं:

adb इंस्टॉल -r yourapk

आपको एक संदेश मिलेगा जो कहता है:

विफलता [INSTALL_FAILED_TEST_ONLY]

जब ऐसा होता है, तो आपको पहले बिल्ड को साफ करके एपीके को फिर से बनाना होगा, फिर बिल्ड-> बिल्ड एपीके का चयन करें। चित्र को देखें:

एंड्रॉयड APK का निर्माण

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

उम्मीद है की यह मदद करेगा

डेविड


आप एक जीवन रक्षक है। मुझे रिलीज़ बिल्ड (दोषपूर्ण कीस्टॉर) से परेशानी हो रही थी और मैं अपने परीक्षकों को डिबग बिल्ड वितरित करना चाहता था।
ड्रगलैब्स

यदि आप ऐपियम का उपयोग कर रहे हैं, तो आपको "allowTestPackages": "true"अपनी e2e योजना क्षमताओं को निर्दिष्ट करने की आवश्यकता है।
जोशुआ पिंटर

9

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


1
यह एंड्रॉइड स्टूडियो 3.0 के साथ शुरू हुआ, और आपके सुझाव ने इसे मेरे लिए निर्धारित किया।
स्काई केल्सी

9

यदि आप एपीके का परीक्षण करना चाहते हैं, तो -tकमांड लाइन विकल्प जोड़ें ।

उदाहरण आदेश:

adb install -t .\app-debug.apk

4

मैं स्वीकृत उत्तर देखता हूं, लेकिन आपको वास्तव में एपीके को पुश करने की आवश्यकता नहीं है और फिर एडीबी शेल डायरेक्ट एडीबी पर कमांड को रन-फ्लैग के साथ चलाएं।

adb इंस्टॉल -t "उर कंप्यूटर में APK के लिए पथ"

संदर्भ के लिए एक स्क्रीनशॉट संलग्न करना यहां छवि विवरण दर्ज करें


3

इसे हल करने के लिए सबसे आसान, एक पुराने ग्रेडल वर्जन पर वापस जाने के बिना रन कॉन्फ़िगरेशन ('पीएम इंस्टॉल के लिए) में' -t 'विकल्प जोड़ना है।

testOnly = 'false' का कोई प्रभाव नहीं पड़ा। त्रुटि ग्रेडल प्लगइन के अल्फा संस्करण के कारण होती है, जो 'केवल परीक्षण के लिए' डिबग एपीके बनाता है। -T विकल्प ऐसे एपीके को स्थापित करने की अनुमति देता है। रन कॉन्फ़िगरेशन में इसे सेट करने से यह स्वचालित रूप से आपको APK स्थापित करता है।



2

मैं अगर यह किसी को भी या नहीं के लिए उपयोगी हो वाला है पता नहीं है, लेकिन मैं इस त्रुटि संदेश, हो गया, जब मैंने गलती का निर्माण करने की कोशिश की और परीक्षण Gradle प्लगइन (के साथ अपने प्रोजेक्ट स्थापित 'gradle:2.4.0-alpha5'स्थिर एंड्रॉयड स्टूडियो संस्करण में) संस्करण ( 2.3, में नहीं 2.4 preview 5संस्करण मैं 'डाउनलोड और पहले स्थापित)।

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


1

हालाँकि मुझे यकीन है कि सौरभ का जवाब अधिकांश अन्य लोगों के लिए काम करेगा, लेकिन मुझे अपने एपीके को स्थापित करने के लिए अतिरिक्त कदमों की पहचान करनी थी।

मैंने निम्नलिखित परिणाम के साथ डिवाइस पर धकेलने की कोशिश की:

? adb push AppClient.TestOnly.App3.apk \tmp\
failed to copy 'AppClient.TestOnly.App3.apk' to '\tmp\': Read-only file system

फाइल सिस्टम RW अनुमतियों को बदलने के लिए चारों ओर देखने के बाद मैंने निम्नलिखित आदेशों को निष्पादित किया:

? adb shell
255|shell@android:/ $ su
shell@android:/ # mount -o remount,rw /
mount -o remount,rw /

मुझे यह तब मिला जब मैंने फिर से धक्का देने की कोशिश की:

? adb push AppClient.TestOnly.App3.apk /tmp
failed to copy 'AppClient.TestOnly.App3.apk' to '/tmp': Permission denied

मैं sdcard को आगे बढ़ाने में सक्षम था:

? adb push AppClient.TestOnly.App3.apk /sdcard/
3178 KB/s (99747 bytes in 0.030s)

किस बिंदु पर मैं सौरभ की आज्ञा का पालन करने में सक्षम था:

shell@android:/ # pm install -t /sdcard/AppClient.TestOnly.App3.apk
pm install -t /sdcard/AppClient.TestOnly.App3.apk
        pkg: /sdcard/AppClient.TestOnly.App3.apk
Success

1
मुझे यह जोड़ना चाहिए कि इसमें से कुछ दूसरों के लिए आवश्यक नहीं हो सकते हैं।
16:13

अतिरिक्त प्रयास की सराहना करते हैं!
सौरभ मेश्राम

1

मेरी खोज नीचे है। अगर मैं एंड्रॉइड स्टूडियो यूआई का उपयोग करके संकलन करता हूं, और एपीके उत्पन्न होता है, तो मैं बस नहीं कर सकता

adb install <xxx.apk>

यह उत्पन्न करेगा Failure [INSTALL_FAILED_TEST_ONLY]

मुझे इसका उपयोग करने के लिए संकलन करने की आवश्यकता है अर्थात ./gradlew app:assembleRelease । तब केवल उत्पन्न APK, फिर इसे केवल स्थापित किया जा सकता है।

ऐसा इसलिए है क्योंकि Android Studio UI Compile, किसी विशेष डिवाइस के लिए केवल टेस्ट APK उत्पन्न करता है, जबकि ./gradlew app:assembleReleaseकमांड वास्तविक एपीके जेनरेशन है जिसे सभी डिवाइस पर इंस्टॉल किया जाना है (और playstore पर अपलोड करें)


मुद्दे के बेहतर तरीके को समझने के लिए मध्यम.com/@elye.project/… को संदर्भित करता है ।
एलिजे

1

जैसा कि प्रलेखन में उल्लेख किया गया है :

जब आप रन पर क्लिक करते हैं, तो Android स्टूडियो अपने आप यह विशेषता जोड़ देता है

तो, अपने apk को स्थापित करने में सक्षम होने के लिए adb install <path to apk file>आपको टर्मिनल से निर्माण को इकट्ठा करने की आवश्यकता है: ./gradlew assembleDebugऔर अदब के साथ स्थापित करें। या बस ./gradlew installDebugडिवाइस पर एक साथ बनाने और स्थापित करने के लिए चलाते हैं।


1

मेरे लिए इसने 'क्लीन ’(अंडर: ऐप, ग्रेड पे, आमतौर पर दाईं ओर स्थित) में एग्ज़ेक्टल टास्क को अंजाम दिया।


1

अनुसरण के रूप में अपने वितरण .apk को Android Studio से बनाएँ

बिल्ड -> बिल्ड एपक ( अहस्ताक्षरित बिल्ड के लिए) बिल्ड -> जेनरेट साइन एपीके (हस्ताक्षरित बिल्ड के लिए)

ये विकल्प APK को एंड्रॉइड के साथ बनाता है: testOnly = "false" विकल्प जो आपको कमोड द्वारा डिवाइस में स्पष्ट रूप से एपीके स्थापित करने की अनुमति देता है।

adb अपनेBuilT.apk को स्थापित करें


1

मेरे लिए जो काम किया है वह सही मेनू से टूलबार से प्रदर्शन कर रहा Refresh all Gradle projectsहै Gradle

PFB Android स्टूडियो से स्क्रीनशॉट।

  1. का चयन Gradleसही मेनू से उपकरण पट्टी।
  2. Refreshआइकन का चयन करें

इससे मेरे लिए समस्या हल हो गई।

एंड्रॉइड स्टूडियो से स्क्रीनशॉट


धन्यवाद दोस्त। यह एंड्रॉइड ग्रेडेल को 4 में अपग्रेड करने के बाद शुरू हुआ। ऐप को सीधे एंड्रॉइड स्टूडियो से काम करना ठीक काम करता है, लेकिन टर्मिनल (एडीबी इंस्टॉल आदि ..) का उपयोग करने पर नहीं।
user3193413

@ user3193413 पोस्ट सुनकर अच्छा लगा
सुनील

0

मैंने कई एपीके के साथ बाहरी प्रोजेक्ट की कोशिश की।

स्टूडियो से कमांड, जैसा दिखता था

adb install-multiple -r ....

उपाय -

  • कंसोल का चयन करें
  • aste कमांड के साथ -t

0

पहले अस्थिर संस्करण निकालें:

adb uninstall समस्याग्रस्त-पैकेज नाम

; और फिर APK को फिर से इंस्टॉल करें।



0

मेरे मामले में, एंड्रॉइड स्टूडियो 4.0 का उपयोग करते हुए, नीचे ने समस्या को हल किया;

'Gradle.properties' फ़ाइल में जोड़ें;

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