Сбой установки ADB с INSTALL_FAILED_TEST_ONLY

201

У меня проблемы с установкой 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?

evve
источник

Ответы:

274

Похоже , вы должны изменить свой 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 работает в 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: Install package on the internal system memory.
Джулиан
95

У меня была похожая проблема, Android Studio 3.0.0 Beta 7и я больше не мог публиковать в магазине.

Как указано здесь: https://developer.android.com/studio/run/index.html

Примечание: кнопка Run создает APK с testOnly = "true", что означает, что APK может быть установлен только через adb (который использует Android Studio). Если вам нужен отлаживаемый APK, который пользователи могут установить без adb, выберите вариант отладки и нажмите «Build»> «Build APK (s)».

То же самое относится и к сборке релиза, с которой Android Studio 3вам нужно перейти Build > Build APK(s)на не тестируемый релизный apk, который вы можете отправить в магазин.

Габриэль Морен
источник
6
Я подозреваю, что прямо сейчас (октябрь / ноябрь 2017 г.) это правильный ответ для большинства людей, которые попадают сюда. До AS 3 APK, производимый «Run», можно было установить даже вне AS, нет, это не так.
noamtm
есть обновление и есть еще кое-что ... мне понадобилось время, чтобы понять это: /
ruben
61

Добавьте -tфлаг установки, как на скриншоте ниже:

ответ в красном поле

sunqi228
источник
Образец проекта, который я компилирую, использует '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
Цена прилипания к кровоточащему краю ... Спасибо!
Райан Р
Кто-нибудь может подтвердить, что настройка android: testOnly = "true" исправит это и для нестабильных версий gradle?
GPS
43

После поиска и просмотра в течение всего дня, работает только одна

android.injected.testOnly=false

в файл gradle.properties

Линьюнь Лю
источник
28

Я согласен с Елисей. Я получил эту же ошибку после открытия проекта в предварительном просмотре 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 студия 3.0 генерирует тест только APK.

Я решил проблему, добавив свойство «android: testOnly» в тег android manifest.

 <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

Hardian
источник
13

добавьте эту строку в ваши gradle.properties

android.injected.testOnly=false
Ник Ли
источник
Спасибо! Это также исправит проблему с ложкой!
Басим Шериф
11

Ни один из предыдущих постов не решил мою проблему. Вот что происходит со мной:
я обычно загружаю приложение из Android Studio, нажимая кнопку «Выполнить». Когда вы сделаете это, Android создаст приложение, которое хорошо для отладки, но не для установки. Если вы попытаетесь установить с помощью:

adb install -r yourapk

вы получите сообщение, которое говорит:

Ошибка [INSTALL_FAILED_TEST_ONLY]

Когда это произойдет, вам нужно будет восстановить apk, сначала очистив сборку, затем выберите Build-> Build APK. Смотрите изображение ниже:

построить Android APK

Этот APK готов к установке с помощью команды adb install или любыми другими способами.

Надеюсь это поможет

Дэвид

us_david
источник
Вы спасатель. У меня были проблемы со сборкой релиза (неисправное хранилище ключей), и я хотел распространять отладочные сборки своим тестерам.
drulabs
Если вы используете appium, вам необходимо указать "allowTestPackages": "true"возможности вашей схемы e2e.
Джошуа Пинтер
9

В моем случае, путем загрузки APK, он был подписан с помощью производственного сертификата и являлся вариантом выпуска, но был сгенерирован кнопкой запуска воспроизведения из студии Android. Проблема решена после генерации APK из Gradle или из опции меню Build APK.

lujop
источник
1
Это начало происходить с Android Studio 3.0, и ваше предложение исправило это для меня.
Скай Келси
9

Если вы хотите проверить apk, просто добавьте параметр -tкомандной строки.

Пример команды:

adb install -t .\app-debug.apk
Луи САПР
источник
4

Я вижу принятый ответ, но вам не нужно нажимать apk, а затем запускать команду на оболочке adb. Прямая установка adb с флагом -t фактически работает

adb install -t "путь к apk в вашем компьютере"

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

Amit
источник
3

Проще всего решить эту проблему, не возвращаясь к более старой версии Gradle, - добавить опцию '-t' в конфигурации выполнения (для установки в pm).

testOnly = 'false' не имел никакого эффекта вообще. Ошибка вызвана альфа-версией плагина gradle, который делает отладочный APK «только для целей тестирования». Опция -t позволяет установить такой APK. Установка его в настройках запуска позволяет автоматически установить ваш APK как обычно.

3c71
источник
3

у меня это работает adb install -t myapk.apk

Вардаан Шарма
источник
2

Я не знаю, будет ли это полезно для кого-то или нет, но я получил это сообщение об ошибке, когда случайно попытался собрать и установить свой проект с версией test gradle plugin ( '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

Посмотрев вокруг, чтобы изменить разрешения файловой системы 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
evve
источник
1
Я должен добавить, что некоторые из этого могут не быть необходимыми для других.
evve
Цените дополнительные усилия!
Саураб Мешрам
1

Мой вывод, как показано ниже. Если я скомпилирую, используя пользовательский интерфейс Android Studio, и сгенерированный APK, я не могу просто

adb install <xxx.apk>

Это будет генерировать Failure [INSTALL_FAILED_TEST_ONLY]

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

Это связано с тем, что в Android Studio UI Compile генерируется только тестовый apk для конкретного устройства, а ./gradlew app:assembleReleaseкоманда представляет собой фактическое поколение apk, которое нужно установить на все устройство (и загрузить в playstore).

Elye
источник
Ссылка на medium.com/@elye.project/…, чтобы лучше понять проблему.
Elye
1

Как указано в документации :

Android Studio автоматически добавляет этот атрибут при нажатии кнопки «Выполнить»

Итак, чтобы иметь возможность установить ваш apk вместе с adb install <path to apk file>вами, вам нужно собрать сборку с терминала: ./gradlew assembleDebugи установить с помощью adb. Или просто запустите, ./gradlew installDebugчтобы собрать и установить на устройство одновременно.

ultraon
источник
1

Для меня это сработало, выполни задачу gradle 'clean' (под: app, на панели Gradle, обычно расположенной справа) и снова запусти проект.

jbourne
источник
1

Создайте свой дистрибутив .apk из Android Studio следующим образом

Build -> Build Apk (s) (для неподписанной сборки) Build -> Generate Signed APK (для подписанной сборки)

Эта опция строит APK с android: testOnly = "false", который позволяет вам установить APK точно в устройство.

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

Abhinandan
источник
1

То, что работало для меня, выполняет Refresh all Gradle projectsс Gradleпанели инструментов из правого меню.

PFB скриншот от Android Studio.

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

Это решило проблему для меня.

Скриншот из Android Studio

Сунил
источник
Спасибо друг. Это началось после обновления Android Gradle до 4. Развертывание приложения непосредственно из Android Studio работает нормально, но не при использовании терминала (установка ADB и т. Д.) После обновления Gradle, как вы упоминали, он работал.
user3193413
@ user3193413 Приятно слышать, что пост был
полезен
0

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

Команда из студии, выглядела как

adb install-multiple -r ....

Решение -

  • выберите консоль
  • команда aste с -t
Стоян Михайлов
источник
0

Сначала удалите нестабильную версию:

adb uninstall проблематичный-имя пакет

; а затем переустановите apk.

Pnemonic
источник
0

Android 3.6.2.

Build >> Build / Bundle apk >> Build apk

Работает нормально.введите описание изображения здесь

Йогендра
источник
0

В моем случае, с помощью Android Studio 4.0, ниже решен вопрос;

Добавить в файл 'gradle.properties';

android.injected.testOnly=false 
Саманта
источник