La instalación de ADB falla con INSTALL_FAILED_TEST_ONLY

201

Tengo problemas para instalar un apk en mi dispositivo.

adb install <.apk>

El uso del comando anterior devuelve lo siguiente:

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

¿Alguna idea de lo que podría causar este problema?

Definitivamente reconoce el dispositivo. ¿Podría ser un problema con el apk?

evve
fuente

Respuestas:

274

Parece que necesitan modificar su AndroidManifest.xml
cambio android:testOnly="true"a android:testOnly="false"o eliminar este atributo.

Si desea mantener el atributo android:testOnlyya trueque puede usar el pm installcomando con la -topción, pero es posible que pushprimero necesite el apk para el dispositivo.

$ 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

Pude reproducir el mismo problema y lo anterior lo resolvió.

Si su APK está fuera del dispositivo (en su escritorio), el siguiente comando lo haría:

$ adb install -t hello.apk
Saurabh Meshram
fuente
63
No necesita adb push y pm install, puede especificar el modificador -t justo después del comando adb install: adb install -t -r package.apk
marioc64
ya no es necesario presionar el apk agregando -t funciona en adb install funciona bien, para el comando completo verifique mi respuesta a continuación.
amIT
adb push bin/hello.apk /tmp/no funciona para mí, adb push ./debug.apk /sdcard/temp/debug.apkfuncionó
HendraWD
adb install -t app/build/outputs/apk/usUnitedStates/debug/app-usUnited-debug.apktrabajó para mi.
Sulav Timsina
Gracias. Eso resolvió mi problema. Mi aplicación era una aplicación del sistema. Por lo tanto, se necesitaba -f. -f: Install package on the internal system memory.
Julián
95

Tuve un problema similar Android Studio 3.0.0 Beta 7y no pude publicar más en Play Store.

Como se indica aquí: https://developer.android.com/studio/run/index.html

Nota: El botón Ejecutar crea un APK con testOnly = "true", lo que significa que el APK solo se puede instalar a través de adb (que utiliza Android Studio). Si desea un APK depurable que la gente pueda instalar sin adb, seleccione su variante de depuración y haga clic en Crear> Crear APK (s).

Lo mismo ocurre con la compilación de lanzamiento, con lo Android Studio 3que debe ir para Build > Build APK(s)tener un apk de lanzamiento no comprobable que puede enviar a la tienda.

Gabriel Morin
fuente
66
Sospecho que en este momento (octubre / noviembre de 2017) esta es la respuesta correcta para la mayoría de las personas que llegan aquí. Antes de AS 3, el APK producido por "Run" era instalable incluso fuera de AS, no, no lo es.
noamtm
hay actualización y hay algunos ajustes más ... me tomó un tiempo resolverlo: /
ruben
61

Agregue el -tindicador de instalación, como en la captura de pantalla a continuación:

la respuesta está en el cuadro rojo

sunqi228
fuente
El proyecto de muestra que compilo usa 'com.android.tools.build:gradle:2.4.0-alpha7' y no se compila con una versión estable, solo agregar -t como se mencionó me resolvió el problema.
BubbaGum
77
Por favor explique lo que -thace.
rmtheis
3
en la ayuda de adb, verá instalar con -t significa permitir paquetes de prueba
xiaoyee
la pantalla se inicia haciendo clic en Editar configuraciones en el menú desplegable del módulo - entre Make y Run, botones Debug en la parte superior del IDE: developer.android.com/studio/run/rundebugconfig.html
Gene Bo
56

En mi caso, este error fue en la versión gradle inestable. Simplemente use una versión estable de gradle (no alfa, ni siquiera beta). Y fue arreglado para mi

Eugene Voronoy
fuente
1
¡Salvó el día! Cambió la versión de gradle de 2.4.0-alpha3 a 2.3.0
Reaz Murshed
1
El precio de apegarse al borde sangriento ... ¡Gracias!
Ryan R
¿Alguien puede confirmar que la configuración de android: testOnly = "true" también lo arreglará para versiones de gradle inestables?
GPS
43

Después de buscar y navegar todo el día, lo único que funciona es agregar

android.injected.testOnly=false

al archivo gradle.properties

Linyun Liu
fuente
28

Estoy de acuerdo con Elisey. Recibí este mismo error después de abrir mi proyecto en la vista previa 2.4 y luego abrir el mismo proyecto en Android Studio 2.3

Se solucionó el problema cambiando esta línea en build.gradle de

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

a

classpath 'com.android.tools.build:gradle:2.3.1'
Patrick Maroney
fuente
18

Android studio 3.0 genera solo APK de prueba.

He resuelto el problema agregando la propiedad "android: testOnly" a la etiqueta del manifiesto de Android.

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

Y luego generó el menú APK de Android studio3.0: Build -> Build APK (s) .

Más información: https://commonsware.com/blog/2017/10/31/android-studio-3p0-flag-test-only.html

Hardian
fuente
13

agregue esta línea a sus 'gradle.properties'

android.injected.testOnly=false
Nick Lee
fuente
¡Gracias! ¡Esto también solucionará el problema del corredor de cuchara!
Basim Sherif
11

Ninguna de las publicaciones anteriores resuelve mi problema. Aquí está lo que está pasando conmigo:
normalmente cargo la aplicación desde Android Studio haciendo clic en el botón "Ejecutar". Cuando haces esto, Android creará una aplicación que sea buena para depurar pero no para instalar. Si intenta instalar usando:

adb install -r yourapk

recibirás un mensaje que dice:

Falla [INSTALL_FAILED_TEST_ONLY]

Cuando esto suceda, deberá reconstruir el apk limpiando primero la compilación, luego seleccione Build-> Build APK. Vea la imagen a continuación:

construir android apk

Este APK está listo para instalarse mediante el comando de instalación adb o cualquier otro método

Espero que esto ayude

David

us_david
fuente
Eres un salvavidas. Estaba teniendo problemas con la versión de lanzamiento (almacén de claves defectuoso) y quería distribuir las versiones de depuración a mis probadores.
drulabs
Si está utilizando appium, debe especificar "allowTestPackages": "true"sus capacidades de esquema e2e.
Joshua Pinter el
9

En mi caso fue mediante la carga de un APK que, aunque estaba firmado con un certificado de producción y era una variante de lanzamiento, fue generado por el botón de ejecución de reproducción del estudio de Android. Problema resuelto después de generar APK desde Gradle o desde la opción de menú Build APK.

lujop
fuente
1
Esto comenzó a suceder con Android Studio 3.0, y su sugerencia me lo solucionó.
Sky Kelsey
9

Si desea probar la apk, simplemente agregue la -topción de línea de comando.

Comando de ejemplo:

adb install -t .\app-debug.apk
Louis CAD
fuente
4

Veo la respuesta aceptada, pero no es necesario presionar el apk y luego ejecutar el comando en adb shell direct adb install con -t flag realmente funciona

adb install -t "ruta a apk en tu computadora"

adjuntando una captura de pantalla para referencia ingrese la descripción de la imagen aquí

amIT
fuente
3

La forma más fácil de resolver esto, sin volver a una versión anterior de gradle es agregar la opción '-t' en las configuraciones de ejecución (para la instalación de pm).

testOnly = 'false' no tuvo ningún efecto. El error es causado por la versión alfa del complemento Gradle que hace que la APK de depuración 'solo tenga fines de prueba'. La opción -t permite instalar dicho APK. Establecerlo en la configuración de ejecución hace que instale automáticamente su APK como de costumbre.

3c71
fuente
3

esto funciona para mí adb install -t myapk.apk

Vardaan Sharma
fuente
2

No sé si será útil para alguien o no, pero recibí este mensaje de error, cuando accidentalmente intenté compilar e instalar mi proyecto con la versión de prueba gradle plugin ( 'gradle:2.4.0-alpha5') en la versión estable de Android Studio ( 2.3no en2.4 preview 5 versión I había descargado e instalado antes).

Cuando me di cuenta de mi error, lancé la versión preliminar de Android Studio y construyó e instaló mi proyecto sin ningún problema.

Elisey Rodriguez Moraga
fuente
1

Aunque estoy seguro de que la respuesta de Saurabh funcionará para la mayoría de las personas, quería identificar los pasos adicionales que tuve que tomar para instalar mi apk.

Traté de empujar al dispositivo con el siguiente resultado:

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

Después de mirar alrededor para cambiar los permisos RW del sistema de archivos, terminé ejecutando los siguientes comandos:

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

Obtuve esto cuando intenté presionar nuevamente:

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

Pude empujar a la tarjeta sd:

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

En ese momento pude ejecutar el comando de 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
evve
fuente
1
Debo agregar que algo de esto puede no ser necesario para otros.
evve
¡Aprecio el esfuerzo extra !.
Saurabh Meshram
1

Mi hallazgo es el siguiente. Si compilo usando la interfaz de usuario de Android Studio y el APK generado, no puedo simplemente

adb install <xxx.apk>

Generará Failure [INSTALL_FAILED_TEST_ONLY]

Necesito compilarlo usando el gradle, es decir ./gradlew app:assembleRelease. Entonces solo el apk generado, luego solo se puede instalar.

Esto se debe a que la compilación de la interfaz de usuario de Android Studio solo genera apk de prueba para un dispositivo en particular, mientras que el ./gradlew app:assembleReleasecomando es la generación real de apk que se instalará en todos los dispositivos (y se cargará en la tienda de juegos)

Elye
fuente
Se refiere a medium.com/@elye.project/… para comprender mejor el problema.
Elye
1

Como se menciona en la documentación :

Android Studio agrega automáticamente este atributo cuando hace clic en Ejecutar

Entonces, para poder instalar su apk con adb install <path to apk file>usted, necesita ensamblar la compilación desde la terminal: ./gradlew assembleDebuge instalar con adb. O simplemente ejecute ./gradlew installDebugpara construir e instalar en el dispositivo simultáneamente.

ultraon
fuente
1

Para mí ha funcionado ejecutar la tarea de gradle 'clean' (bajo: aplicación, en el panel de Gradle, generalmente ubicado a la derecha) y ejecutar nuevamente el proyecto.

jbourne
fuente
1

Cree su distribución .apk desde Android Studio de la siguiente manera

Build -> Build Apk (s) (para build sin firmar) Build -> Generate APK firmado (para build firmado)

Esta opción construye el APK con Android: testOnly = "false" opción que le permite instalar el APK explícitamente en el dispositivo mediante el commond.

adb instala yourBuilT.apk

Abhinandan
fuente
1

Lo que funcionó para mí es realizar Refresh all Gradle projectsdesde la Gradlebarra de herramientas desde el menú de la derecha.

PFB la captura de pantalla de Android Studio.

  1. Seleccione la Gradlebarra de herramientas del menú de la derecha.
  2. Selecciona el Refreshícono

Esto resolvió el problema para mí.

Captura de pantalla de Android Studio

sunil
fuente
Gracias amigo. Comenzó después de actualizar Android Gradle a 4. La implementación de la aplicación directamente desde el estudio de Android funciona bien, pero no si se usa el terminal (instalación adb, etc.). Después de actualizar el Gradle como usted mencionó, funcionó.
user3193413
@ user3193413 Me alegra saber que la publicación fue de ayuda
sunil
0

Intenté un proyecto externo, con múltiples apk.

El comando de Studio, parecía

adb install-multiple -r ....

Solución

  • seleccione consola
  • comando aste con -t
Stoyan Mihaylov
fuente
0

Primero elimine la versión inestable:

adb uninstall nombre-paquete-problemático

; y luego reinstale el apk.

Neumonía
fuente
0

Android 3.6.2.

Build >> Build / Bundle apk >> Build apk

Está funcionando bien.ingrese la descripción de la imagen aquí

Yogendra
fuente
0

En mi caso, usando Android Studio 4.0, lo siguiente resolvió el problema;

Añadir al archivo 'gradle.properties';

android.injected.testOnly=false 
Samantha
fuente