it-roy-ru.com

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

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

131
evve

Похоже, вам нужно изменить свой 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
172
Saurabh Meshram

У меня была похожая проблема с 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, который люди могут установить без adb, выберите свой вариант отладки и нажмите Build> Build APK (s).

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

72
Gabriel Morin

В моем случае эта ошибка была в нестабильной версии Gradle. Просто используйте стабильную версию Gradle (не альфа, даже не бета). И это было исправлено для меня

54
Eugene Voronoy

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

answer is in the red box

50
sunqi228

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

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

Android.injected.testOnly=false

в gradle.properties file

23
Linyun Liu

Android студия 3.0 генерирует тест только APK.

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

 <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

11
Hardian

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

9
lujop

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

Android.injected.testOnly=false
8
nick lee

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

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

adb install -t .\app-debug.apk
6
Louis CAD

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

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

3
3c71

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

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

прикрепление скриншота для справки  enter image description here

3
amIT

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

2
Vardaan Sharma

Я не знаю, будет ли это полезно для кого-то или нет, но я получил это сообщение об ошибке, когда случайно попытался собрать и установить свой проект с версией плагина тестового Gradle ('gradle:2.4.0-alpha5') в стабильной версии Android Studio (2.3, а не в 2.4 preview 5 версия, которую я скачал и установил раньше).

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

2
Elisey Rodriguez Moraga

Мой вывод, как показано ниже. Если я скомпилирую с помощью пользовательского интерфейса 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).

1
Elye

Для меня сработало выполнение Refresh all Gradle projects из панели инструментов Gradle в правом меню.

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

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

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

 Screenshot from Android Studio

1
sunil

Хотя я уверен, что ответ Саураба будет работать для большинства других людей, я действительно хотел определить дополнительные шаги, которые мне пришлось предпринять, чтобы установить мой 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|[email protected]:/ $ su
[email protected]:/ # 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)

В этот момент я смог выполнить команду Саураба:

[email protected]:/ # 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

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

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

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

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

1
Abhinandan

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

1
jbourne

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

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

adb install-multiple -r ....

Решение - 

  • выберите консоль 
  • команда aste с -t
0
Stoyan Mihaylov

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

adb uninstall проблемное имя пакета

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

0
Pnemonic

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

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

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

0
ultraon