การติดตั้ง 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]

มีความคิดเกี่ยวกับสิ่งที่อาจทำให้เกิดปัญหานี้หรือไม่?

มันรับรู้อุปกรณ์แน่นอน เป็นปัญหากับ apk ไหม

คำตอบ:


276

ดูเหมือนว่าคุณจะต้องแก้ไขAndroidManifest.xml
เปลี่ยนandroid:testOnly="true"เป็นandroid:testOnly="false"หรือลบคุณลักษณะนี้

หากคุณต้องการเก็บแอททริบิวไว้android:testOnlyตามที่trueคุณสามารถใช้pm installคำสั่งพร้อม-tตัวเลือกแต่คุณอาจจำเป็นต้องpushใช้ apk ไปยังอุปกรณ์ก่อน

$ 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

ฉันสามารถที่จะทำซ้ำปัญหาเดียวกันและแก้ไขได้

หาก APK ของคุณอยู่นอกอุปกรณ์ (บนเดสก์ท็อปของคุณ) คำสั่งด้านล่างจะทำดังนี้:

$ adb install -t hello.apk

63
คุณไม่จำเป็นต้องติดตั้ง adb push และ pm คุณสามารถระบุสวิตช์ -t หลังจากคำสั่ง adb install: adb install -t -r package.apk
marioc64

ไม่จำเป็นต้องเพิ่ม apk อีกต่อไปโดยเพิ่ม -t work ใน adb install ทำงานได้ดีสำหรับคำสั่งเต็มตรวจสอบคำตอบของฉันด้านล่าง
amIT

adb push bin/hello.apk /tmp/ไม่ทำงานสำหรับฉันadb push ./debug.apk /sdcard/temp/debug.apkทำงาน
HendraWD

adb install -t app/build/outputs/apk/usUnitedStates/debug/app-usUnited-debug.apkทำงานให้ฉัน
Sulav Timsina

ขอบคุณ นั่นช่วยแก้ไขปัญหาของฉัน แอพของฉันเป็นแอพระบบ ดังนั้น -f จึงต้องการ -f: Install package on the internal system memory.
Julian

95

ฉันมีปัญหาคล้ายกันกับAndroid Studio 3.0.0 Beta 7และไม่สามารถเผยแพร่อีกต่อไปที่ play store

ตามที่ระบุไว้ที่นี่: https://developer.android.com/studio/run/index.html

หมายเหตุ: ปุ่ม Run สร้าง APK ที่มี testOnly = "true" ซึ่งหมายความว่าสามารถติดตั้ง APK ผ่าน adb เท่านั้น (ที่ Android Studio ใช้) หากคุณต้องการ APK ที่ debuggable ซึ่งผู้ใช้สามารถติดตั้งได้โดยไม่ต้องใช้ adb ให้เลือกชุดดีบั๊กและคลิกสร้าง> สร้าง APK

เช่นเดียวกันสำหรับ build build ด้วยAndroid Studio 3คุณต้องไปที่Build > Build APK(s)apk ที่ไม่สามารถทดสอบได้ซึ่งคุณสามารถส่งไปยังร้านค้าได้


6
ฉันสงสัยว่าตอนนี้ (ต.ค. / พ.ย. 2017) นี่เป็นคำตอบที่ถูกต้องสำหรับคนส่วนใหญ่ที่มาที่นี่ ก่อนหน้า AS 3 APK ที่ผลิตโดย "Run" นั้นสามารถติดตั้งได้แม้จะอยู่นอก AS ก็ตาม แต่ก็ไม่ใช่
noamtm

มีการปรับปรุงและมีการปรับแต่งเพิ่มเติม .. ฉันใช้เวลาสักครู่เพื่อคิดออก: /
ruben

61

เพิ่มการ-tติดตั้งตั้งค่าสถานะตามภาพด้านล่าง:

คำตอบอยู่ในกล่องสีแดง


โปรเจ็กต์ตัวอย่างที่ฉันคอมไพล์ใช้ 'com.android.tools.build:gradle:2.4.0-alpha7' และไม่คอมไพล์ด้วยเวอร์ชันที่เสถียรเพียงเพิ่ม -t ดังที่แก้ไขปัญหาสำหรับฉัน
BubbaGum

7
โปรดอธิบายสิ่งที่-tทำ
rmtheis

3
ในความช่วยเหลือ adb คุณจะเห็นการติดตั้งด้วย -t หมายถึงอนุญาตให้แพคเกจการทดสอบ
xiaoyee

หน้าจอเปิดใช้งานโดยคลิกแก้ไขการกำหนดค่าในเมนูดร็อปดาวน์โมดูล - ระหว่าง Make and Run, ปุ่ม Debug ที่ด้านบนของ IDE: developer.android.com/studio/run/rundebugconfig.html
Gene Bo

56

ในกรณีของฉันความผิดพลาดนี้เป็นรุ่นเกรดที่ไม่เสถียร เพียงใช้ gradle เวอร์ชันที่เสถียร (ไม่ใช่อัลฟ่าไม่ใช่เบต้า) และได้รับการแก้ไขสำหรับฉัน


1
บันทึกวัน! เปลี่ยนเวอร์ชั่น gradle จาก 2.4.0-alpha3 เป็น 2.3.0
Reaz Murshed

1
ราคาติดกับขอบเลือดออก ... ขอบคุณ!
Ryan R

ทุกคนสามารถยืนยันว่าการตั้งค่า android: testOnly = "true" จะแก้ไขได้สำหรับรุ่น gradle ที่ไม่เสถียรด้วยหรือไม่
GPS

43

หลังจากค้นหาและเรียกดูทั้งวันงานเดียวเท่านั้นที่เพิ่ม

android.injected.testOnly=false

ไปที่ไฟล์gradle.properties


28

ฉันเห็นด้วยกับ Elisey ฉันได้รับข้อผิดพลาดเดียวกันนี้หลังจากเปิดโครงการในตัวอย่าง 2.4 แล้วเปิดโครงการเดียวกันใน android studio 2.3

แก้ไขปัญหาโดยการเปลี่ยนบรรทัดนี้ใน build.gradle จาก

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

ถึง

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

18

Android studio 3.0 สร้างการทดสอบเฉพาะ APK

ฉันแก้ไขปัญหาโดยเพิ่มคุณสมบัติ "android: testOnly" ลงในแท็กรายการของ android

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

จากนั้นสร้างเมนู APK โดยAndroid studio3.0: Build -> Build APK (s)(s)

ข้อมูลเพิ่มเติม: https://commonsware.com/blog/2017/10/31/android-studio-3p0-flag-test-only.html


13

เพิ่มบรรทัดนี้ใน 'gradle.properties' ของคุณ

android.injected.testOnly=false

ขอบคุณ! สิ่งนี้จะแก้ไขปัญหานักวิ่งช้อนเช่นกัน!
Basim Sherif

11

การโพสต์ก่อนหน้านี้ไม่มีวิธีแก้ปัญหาของฉัน นี่คือสิ่งที่เกิดขึ้นกับฉัน:
ฉันปกติโหลดแอพจาก android studio โดยคลิกที่ปุ่ม "Run" เมื่อคุณทำเช่นนี้ Android จะสร้างแอปที่ดีสำหรับการดีบัก แต่ไม่ใช่สำหรับการติดตั้ง หากคุณพยายามติดตั้งโดยใช้:

adb install -r yourapk

คุณจะได้รับข้อความที่ระบุว่า:

ล้มเหลว [INSTALL_FAILED_TEST_ONLY]

เมื่อสิ่งนี้เกิดขึ้นคุณจะต้องสร้าง apk ใหม่อีกครั้งโดยทำความสะอาดบิลด์ก่อนจากนั้นเลือก Build-> Build APK ดูภาพร้อง:

สร้าง apk android

APK นี้พร้อมที่จะติดตั้งผ่านคำสั่ง adb install หรือวิธีอื่น ๆ

หวังว่านี่จะช่วยได้

เดวิด


คุณเป็นผู้ช่วยชีวิต ฉันมีปัญหากับ build build (keystore ที่ผิดพลาด) และต้องการแจกจ่าย debug builds ให้กับผู้ทดสอบของฉัน
drulabs

หากคุณใช้ appium คุณจะต้องระบุความ"allowTestPackages": "true"สามารถของ e2e
Joshua Pinter

@JoshuaPinter คุณช่วยอธิบายเพิ่มเติมได้ไหมว่าจะให้ allowTestPackages ":" true "
Girish

@Girish คุณเพิ่มเข้าไปในโปรแกรมควบคุมการตั้งค่า Appium config.allowTestPackages = trueของคุณเช่น หมายเหตุนี้เฉพาะที่เกี่ยวข้องกับการยุติการทดสอบโดยใช้ปลาย Appium
Joshua Pinter

9

ในกรณีของฉันคือโดยการอัปโหลด APK แม้ว่ามันจะถูกเซ็นชื่อด้วยใบรับรองการผลิตและเป็นรุ่นที่วางจำหน่ายถูกสร้างขึ้นโดยใช้ปุ่มเล่นจากสตูดิโอ Android แก้ไขปัญหาหลังจากสร้าง APK จาก Gradle หรือจากตัวเลือกเมนู Build APK


1
สิ่งนี้เริ่มเกิดขึ้นกับ Android Studio 3.0 และข้อเสนอแนะของคุณจะแก้ไขให้ฉัน
Sky Kelsey

9

หากคุณต้องการทดสอบ apk เพียงเพิ่ม-tตัวเลือกบรรทัดคำสั่ง

คำสั่งตัวอย่าง:

adb install -t .\app-debug.apk

4

ฉันเห็นคำตอบที่ยอมรับ แต่คุณไม่จำเป็นต้องกด apk จริง ๆ แล้วรันคำสั่งบน adb shell adb โดยตรงติดตั้งด้วยแฟล็ก -t ใช้งานได้จริง

adb install -t "พา ธ ไปยัง apk ในคอมพิวเตอร์ ur"

แนบภาพหน้าจอสำหรับการอ้างอิง ป้อนคำอธิบายรูปภาพที่นี่


3

วิธีที่ง่ายที่สุดในการแก้ปัญหานี้โดยไม่ต้องย้อนกลับไปเป็นเวอร์ชั่นที่เก่ากว่าคือการเพิ่มตัวเลือก '-t' ในการกำหนดค่าการเรียกใช้ (สำหรับการติดตั้ง pm)

testOnly = 'false' ไม่มีผลใด ๆ ข้อผิดพลาดเกิดจากปลั๊กอิน gradle รุ่นอัลฟ่าที่ทำให้การดีบัก APK สำหรับการทดสอบเท่านั้น ตัวเลือก -t อนุญาตให้ติดตั้ง APK ดังกล่าว การตั้งค่าในการกำหนดค่าการรันทำให้มันติดตั้ง APK ของคุณโดยอัตโนมัติตามปกติ



2

ฉันไม่ทราบว่ามันจะมีประโยชน์สำหรับทุกคนหรือไม่ แต่ฉันได้รับข้อความแสดงข้อผิดพลาดนี้เมื่อฉันพยายามสร้างและติดตั้งโปรเจ็กต์ของฉันด้วยปลั๊กอินทดสอบ gradle ( 'gradle:2.4.0-alpha5') ในเวอร์ชัน Android Studio ที่เสถียร ( 2.3ไม่ใช่ใน2.4 preview 5รุ่น I ต้องดาวน์โหลดและติดตั้งก่อน)

เมื่อฉันตระหนักถึงความผิดพลาดของฉันฉันได้เปิดตัวเวอร์ชันตัวอย่างของ Studio Android และสร้างและติดตั้งโครงการของฉันโดยไม่มีปัญหา


1

แม้ว่าฉันจะแน่ใจว่าคำตอบของ Saurabh จะใช้ได้กับคนอื่น ๆ ส่วนใหญ่ แต่ฉันต้องการระบุขั้นตอนพิเศษที่ฉันต้องทำเพื่อติดตั้ง apk ของฉัน

ฉันพยายามผลักดันอุปกรณ์ด้วยผลลัพธ์ต่อไปนี้:

? 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)

เมื่อถึงจุดที่ฉันสามารถดำเนินการคำสั่งของ Saurabh:

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
ฉันควรเพิ่มว่าสิ่งนี้อาจไม่จำเป็นสำหรับผู้อื่น
วิวัฒนาการ

ขอบคุณสำหรับความพยายามพิเศษ!
Saurabh Meshram

1

การค้นพบของฉันมีดังนี้ หากฉันรวบรวมโดยใช้ Android Studio UI และ APK ที่สร้างขึ้นฉันไม่สามารถทำได้

adb install <xxx.apk>

มันจะสร้าง Failure [INSTALL_FAILED_TEST_ONLY]

ฉันต้องการที่จะรวบรวมมันใช้ gradle ./gradlew app:assembleReleaseคือ จากนั้นเฉพาะ apk ที่สร้างขึ้นจากนั้นจะสามารถติดตั้งได้เท่านั้น

นี่เป็นเพราะคอมไพล์ Android Studio UI สร้าง apk ทดสอบสำหรับอุปกรณ์เฉพาะเท่านั้นในขณะที่./gradlew app:assembleReleaseคำสั่งคือการสร้าง apk จริงที่จะติดตั้งบนอุปกรณ์ทั้งหมด (และอัปโหลดไปยัง playstore)


อ้างถึงmedium.com/@elye.project/…เพื่อให้เข้าใจปัญหาได้ดีขึ้น
Elye

1

ตามที่ระบุไว้ในเอกสาร :

Android Studio จะเพิ่มคุณสมบัตินี้โดยอัตโนมัติเมื่อคุณคลิกเรียกใช้

ดังนั้นเพื่อให้สามารถติดตั้ง apk ของadb install <path to apk file>คุณได้คุณต้องรวบรวมบิลด์จากเทอร์มินัล./gradlew assembleDebugและติดตั้งด้วย adb หรือเพียงแค่เรียกใช้./gradlew installDebugเพื่อสร้างและติดตั้งบนอุปกรณ์พร้อมกัน


1

สำหรับฉันแล้วมันใช้งานงาน gradle 'clean' (ใต้: app ที่บานหน้าต่าง Gradle ซึ่งมักจะอยู่ทางด้านขวา) และเรียกใช้โครงการอีกครั้ง


1

สร้างการกระจายของคุณ. apk จาก Android Studio ดังต่อไปนี้

Build -> Build Apk ( สำหรับบิลด์ที่ไม่ได้ลงชื่อ) Build -> สร้าง APK ที่ลงชื่อแล้ว (สำหรับบิลด์ที่มีการลงชื่อ)

ตัวเลือกเหล่านี้จะสร้าง APK ที่มี android: testOnly = "false" ซึ่งให้คุณติดตั้ง APK ลงในอุปกรณ์โดยคอมมอนส์

adb ติดตั้ง yourBuilT.apk


1

สิ่งที่ได้ผลสำหรับฉันกำลังแสดงRefresh all Gradle projectsจากGradleแถบเครื่องมือจากเมนูด้านขวา

PFB สกรีนช็อตจาก Android Studio

  1. เลือก Gradleแถบเครื่องมือจากเมนูด้านขวา
  2. เลือกRefreshไอคอน

วิธีนี้แก้ไขปัญหาสำหรับฉัน

สกรีนช็อตจาก Android Studio


ขอบคุณเพื่อน มันเริ่มต้นหลังจากอัปเกรด android gradle เป็น 4 การปรับใช้แอพโดยตรงจาก android studio ทำงานได้ดี แต่ไม่ใช้เทอร์มินัล (adb install ฯลฯ .. ) หลังจากรีเฟรช gradle ตามที่คุณพูดถึงมันทำงาน
user3193413

@ user3193413 ดีใจที่ได้ทราบโพสต์นั้นเป็นความช่วยเหลือ
sunil

0

ฉันลองโครงการภายนอกด้วย apk หลายรายการ

คำสั่งจากสตูดิโอดูเหมือนว่า

adb install-multiple -r ....

สารละลาย -

  • เลือกคอนโซล
  • คำสั่ง aste ด้วย -t

0

เอาเวอร์ชันที่ไม่เสถียรออกก่อน:

adb uninstall ปัญหาแพคเกจชื่อ

; จากนั้นติดตั้ง apk อีกครั้ง



0

ในกรณีของฉันใช้ Android Studio 4.0 ด้านล่างแก้ปัญหาได้

เพิ่มไปยังไฟล์ 'gradle.properties';

android.injected.testOnly=false 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.