Помилка встановлення ADB з INSTALL_FAILED_TEST_ONLY


200

У мене виникають проблеми з встановленням 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?

Відповіді:


273

Схоже , ви повинні змінити свій AndroidManifest.xml
Змінити , android:testOnly="true"щоб android:testOnly="false"або видалити цей атрибут.

Якщо ви хочете зберегти атрибут, android:testOnlyоскільки trueви можете використовувати pm installкоманду з -tопцією, але , можливо, pushспочатку вам потрібно буде apk to device.

$ 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 pm, ви можете вказати перемикач -t відразу після команди adb install: adb install -t -r package.apk
marioc64

більше не потрібно натискати на apk, додаючи -t працює в 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працював на мене.
Сулав Тімсіна

Дякую. Це вирішило мою проблему. Моє додаток було системним додатком. Таким чином -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

Примітка. Кнопка "Запуск" створює APK з testOnly = "true", це означає, що APK можна встановити лише через adb (який використовує Android Studio). Якщо ви хочете налагоджувати APK, який можна встановити без adb, виберіть варіант налагодження та натисніть «Створити»> «Створити APK (файли)».

Те саме стосується збірки релізів. 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

екран запускається натисканням кнопки "Редагувати конфігурації" у спадному меню модуля - між кнопками "Зробити та запустити", кнопки налагодження у верхній частині IDE: developer.android.com/studio/run/rundebugconfig.html
Джин Бо

56

У моєму випадку ця помилка була у нестабільній версії gradle. Просто використовуйте стабільну версію 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

Я згоден з Елісей. Я отримав цю саму помилку після відкриття свого проекту в попередньому попередньому перегляді 2.4, а потім відкриття того ж проекту в студії Android Android 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" в тег аністичного маніфесту.

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

А потім згенеровано APK меню Android studio3.0: Build -> Build APK (s) .

Детальніше: https://commonsware.com/blog/2017/10/31/android-studio-3p0-flag-test-only.html


12

додайте цей рядок до своєї "gradle.properties"

android.injected.testOnly=false

Дякую! Це також виправить проблему бігунки з ложкою!
Базим Шериф

11

Жодна з попередніх публікацій не вирішує мою проблему. Ось, що відбувається зі мною:
я зазвичай завантажую додаток із андроїд-студії, натискаючи кнопку «Запустити». Коли ви це зробите, android створить додаток, який підходить для налагодження, але не для встановлення. Якщо ви намагаєтесь встановити за допомогою:

adb install -r yourapk

ви отримаєте повідомлення, яке говорить:

Помилка [INSTALL_FAILED_TEST_ONLY]

Коли це станеться, вам потрібно буде відновити apk, спочатку очистіть збірку, а потім виберіть Build-> Build APK. Дивіться зображення нижче:

build android apk

Цей APK готовий до встановлення через команду adb install або будь-які інші методи

Сподіваюсь, це допомагає

Девід


Ви рятувальник. У мене виникли проблеми зі збіркою версії (несправна зберігання клавіш), і я хотів поширити налагоджувальні версії своїм тестерам.
друлаби

Якщо ви використовуєте appium, вам потрібно вказати "allowTestPackages": "true"свої можливості схеми e2e.
Джошуа Пінтер

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 direct adb install з прапорцем -t насправді працює

adb install -t "шлях до apk в ур комп'ютері"

додавання скріншоту для довідки введіть тут опис зображення


3

Найпростіше вирішити це, не повертаючись до старшої версії gradle, - додати параметр '-t' у конфігураціях запуску (для установки pm).

testOnly = 'false' не мав жодного ефекту. Помилка викликана альфа-версією плагіну gradle, який робить налагодження APK "лише для тестових цілей". Опція -t дозволяє встановлювати такі APK. Якщо встановити його в конфігурації запуску, він автоматично встановлює вам APK, як завжди.



2

Я не знаю, чи буде це комусь корисно чи ні, але мені надійшло це повідомлення про помилку, коли я випадково спробував створити і встановити мій проект з тестовою версією плагіна ( 'gradle:2.4.0-alpha5') версія в стабільній версії Android Studio (а 2.3не у 2.4 preview 5версії I я раніше завантажував і встановлював).

Коли я зрозумів свою помилку, я запустив попередню версію Android Studio, і вона без проблем створила і встановила мій проект.


1

Хоча я впевнений, що відповідь Саураби спрацює для більшості інших людей, я хотів визначити додаткові кроки, які мені довелося вжити, щоб встановити свій apk.

Я намагався натиснути на пристрій із таким результатом:

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

Оглянувшись, щоб змінити права доступу до файлової системи, я в кінцевому підсумку виконав такі команди:

? 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
Додам, що деякі з них можуть не знадобитися іншим.
evve

Вдячний за додаткові зусилля!
Саураб Мешрам

1

Моя знахідка наведена нижче. Якщо я компілюю за допомогою інтерфейсу Android Studio і створений APK, я не можу просто

adb install <xxx.apk>

Це породжує Failure [INSTALL_FAILED_TEST_ONLY]

Мені потрібно скомпілювати його за допомогою gradle, тобто ./gradlew app:assembleRelease. Тоді тільки згенерований apk, тоді він може бути встановлений тільки.

Це тому, що компіляція користувацького інтерфейсу Android Studio, генерує лише тестовий 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' (під: додаток, на панелі Gradle, як правило, розташований праворуч) і запускаємо проект знову.


1

Створіть свій розповсюдження .apk з Android Studio, як слід

Build -> Build Apk (s) (для безпідписаної збірки) Build -> Створити підписаний APK (для підписаної збірки)

Ця опція будує APK з android: testOnly = "false" опцією, яка дозволяє встановити APK докладно в пристрій за допомогою commond.

adb встановити yourBuilT.apk


1

Те, що працювало для мене, - це виконання Refresh all Gradle projectsна Gradleпанелі інструментів з правого меню.

PFB скріншот від Android Studio.

  1. Виберіть Gradleпанель інструментів у правому меню.
  2. Виберіть Refreshпіктограму

Це вирішило для мене питання.

Знімок екрана від Android Studio


Дякую, друже. Він розпочався після оновлення андроїда gradle до 4. Розгортання програми безпосередньо з андроїд-студії працює чудово, але не, якщо використовується термінал (adb install тощо). Після оновлення gradle, як ви згадали, він працював.
користувач3193413

@ user3193413 Приємно почути, що повідомлення допомогло
1818 року

0

Я спробував зовнішній проект, з декількома apk.

Команда від Studio, виглядала так

adb install-multiple -r ....

Рішення -

  • виберіть консоль
  • команда aste з -t

0

спочатку видаліть нестабільну версію:

adb uninstall problematic-package-name

; а потім перевстановіть apk.



0

У моєму випадку, використовуючи Android Studio 4.0, нижче вирішено проблему;

Додати у файл 'gradle.properties';

android.injected.testOnly=false 
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.