Error [INSTALL_FAILED_INVALID_APK]


85

Cuando hago clic para ejecutar un proyecto que acabo de crear en Android Studio 0.2.10 y selecciono mi Android (conectado por USB con depuración por USB activado), aparece este error:

Waiting for device.
Target device: 0123456789ABCDEF
Uploading file
    local path: /Users/Rui/AndroidStudioProjects/FirstAppProject/FirstApp/build/apk/FirstApp-debug-unaligned.apk
    remote path: /data/local/tmp/rui.firstapp
Installing rui.firstapp
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/rui.firstapp"
pkg: /data/local/tmp/rui.firstapp
Failure [INSTALL_FAILED_INVALID_APK]

¿Alguna idea de lo que podría ser?


Seleccione mi teléfono ... !! ¿Quiso decir emulator ... ??
Gokul Nath KP

1
No, mi Android con depuración por USB activado.
RuiG

¿Te aseguraste de que la aplicación sea compatible con el dispositivo que estás usando? Verifique los valores MinSDKy TargetSDKen su manifiesto. ¿Has intentado instalar esto en un emulador? Esto reducirá si el problema está en el APK o en su dispositivo.
free3dom

Respuestas:


153

Estaba obteniendo esto en Android Studio y todo lo que hice para solucionarlo fue ir "Build" > "Clean Project"y simplemente funcionó.


8
Si aún no funciona, Build -> Rebuild Project after Clean Project funcionaría.
Pei

Acabo de recibir esto con una actualización de gradle 5.4.1 a 5.6.1; no estoy seguro de qué extrañeza lo causó, pero las grandes actualizaciones de gradle ciertamente pueden hacerlo. Una solución de línea de comandos alternativa es ./gradlew cleanseguida por su comando de compilación normal
Mike Hardy

18

Simplemente elimine el antiguo APK android / app / build / outputs / apk / debug / app-debug.apk en la carpeta. eso es todo. disfruta tu codificación ...


Bienvenido @VenkateshMogili
mahendren

1
rm -fr android/app/build/outputs/apk/debug/
felansu

15

Tuve un problema similar una vez, lo que observé fue que el nombre del paquete en mi Androidmanifest.xml se inició con un carácter de espacio vacío. like " com.example.test" instead of "com.example.test"

Eliminé todos esos espacios inválidos de mi archivo de manifiesto, resolvió mi problema

Edición 1 : '-' en el nombre del paquete también causa el mismo problema en algunas versiones de Android


1
¡Guauu! Pensé invalidate cache and restartque forzaría una construcción limpia, aparentemente no es así.
GabrielOshiro

10

Tuve el mismo problema pero ninguna de las soluciones me funcionó. El problema era que no tenía . separadores en el nombre de mi paquete.
es decir, si el nombre de su paquete es my.packagename está bien, pero no puede ser solo mypackagename
Recibí la pista de este informe de error.

https://code.google.com/p/android/issues/detail?id=55841


9

Si alguien todavía tiene problemas, entonces Build-> Clean Project luego Build-> Rebuild project finalmente Sync project with Gradle file .


8

Cómo solucionar este problema:

  1. Instalar en pc RootExplorer
  2. Crear nuevo tmp carpeta en la tarjeta SD
  3. Mantenga presionada la carpeta tmp y seleccione Linkesta carpeta (última opción en el menú)
  4. Vaya /data/local/y toque el botón CREATE LINKdesde la parte inferior

8

Tuve este problema y ninguna de las soluciones anteriores funcionó para mí.

Por alguna razón, los permisos no se establecieron correctamente en mi /data/local/tmpdirectorio (solo la raíz tenía rwx). Solucioné el problema usando ADB (necesitará un dispositivo rooteado):

  1. Conecte su teléfono a través de USB
  2. Inicie ADB usando adb shell
  3. Pasar a /data/localusarcd /data/local
  4. Cambiar al modo raíz usando su
  5. Permitir lectura / escritura / ejecución en el tmpdirectorio usandochmod 777 tmp
  6. Desconecte, reinicie Android Studio y vuelva a conectar el dispositivo

7

Al apagar Instant Run resolví mi problema. No conozco ninguna explicación hasta ahora. Después de migrar a Android Studio 3.0, comienza un problema como este. Espero que esto ayude a alguien en el futuro.


6

Cuando experimenté este problema, lo que me solucionó fue asegurarme de que el nombre del paquete AndroidManifest.xml fuera el mismo que el de la aplicación build.grade.


3

Encontré otra razón de este error. Si ha rooteado los permisos de acceso de su dispositivo de / data / local / tmp pueden cambiarse, por lo que adb no puede acceder a su archivo temporal. La solución es crear la carpeta "tmp" en la tarjeta sd y crear un enlace simbólico en / data / local / (a ​​través de ADB shell o Root Explorer).


No podía creer eso: verificado con otro dispositivo (todos los permisos parecían idénticos, hasta el nivel raíz); jugueteó con los permisos (los hizo 777 parejos), de ninguna manera. Entonces, qué perder. Probé el enlace simbólico - ¡guau! Obras (+1). Todavía me gustaría saber por qué y qué hay detrás de eso. En mi caso, no fue el enraizamiento lo que lo causó, sino que hizo que el demonio ADB se ejecutara en "modo inseguro" (es decir, con permisos de root).
Izzy

3

Si escribe android:extractNativeLibs="false"en el archivo AndroidManifest. luego cámbialo aandroid:extractNativeLibs="true"


2

Esto ayudó en mi caso:

Settings -> Apps -> Google Play Store -> Click "Enable" button.

Guau. Gracias. Inhabilité GooglePlay y no noté que esta era la causa principal de mis problemas.
W0rmH0le

2

Probé la mayoría de las soluciones ofrecidas anteriormente (las simples, no las que ofrecen chmod y alteran las bibliotecas internas) y ninguna de ellas funciona

Finalmente, lo que funcionó para mí fue: "Proyecto limpio" -> "Proyecto de reconstrucción" -> cambió el nombre de la versión de la aplicación en el módulo de la aplicación build.gradle -> Sincronizar Gradle -> Ejecutar la aplicación en el dispositivo


2

Me encontré con este problema al tener variantes de compilación no coincidentes. Un módulo de Dynamic Delivery estaba en la variante de depuración mientras que los módulos restantes estaban en el lanzamiento. Simplemente cambiando el módulo Dynamic Delivery para liberar, reconstruir e instalar, se solucionó el problema.


2

Para los proyectos de Flutter, con el editor de VS Code, vaya a la carpeta de origen del proyecto, elimine la carpeta "build" y comience a depurar.


2

Tengo este problema en un proyecto con Dagger y varios módulos. Lo que funcionó para mí (nada de lo anterior funcionó) fue 1) vaciar la carpeta .gradle 2) vaciar la carpeta .idea 3) En el proyecto gradle.properties, marque org.gradle.caching = false 4) Posiblemente invalide las cachés en AS , limpiar, reconstruir

Es posible que pueda salirse con la suya con solo el n. ° 3, limpiar y luego construir.

EDITAR: Últimamente he podido solucionar esto reiniciando AS, luego haciendo una limpieza y luego volviendo a instalar.


extrañamente. he probado algunos de arriba. esto funcionó para mí Este desarrollo de Android se está volviendo loco. código durante 30 segundos y espere 5 minutos para obtener la compilación
satyajit

@satyajit. ¡¡5 minutos!! el mío tarda 10! Este es el único que funciona constantemente para mí.
Dan Anderson

puedo hacer que funcione ./gradlew installDebugdesde la línea de comando
satyajit

2

La causa de este problema para mí fue tener la variante de compilación incorrecta seleccionada para uno de los módulos de mi aplicación. En la herramienta "Compilar variantes", seleccioné la variante del módulo que coincidía con el módulo de la aplicación y me solucionó el problema.


1

Tuve este problema en Android Studio porque en mi compilación de depuración agregué el sufijo del nombre de la versión -DEBUG y el - era el problema.

Intente tener solo letras, números y puntos en los nombres de las versiones y los ID de las aplicaciones


1

Navegar a Run/Debug Configurations

Haga clic en Ejecutar en la pestaña superior> Editar configuraciones

  • Módulo: seleccione su aplicación
  • Opciones de instalación: Implementar APK predeterminado
  • Okay

ingrese la descripción de la imagen aquí


0

Solo tuve el mismo error. Tenía el año 2015 en la identificación de la aplicación. Reemplacé 2015 por quince y eso lo resolvió.

Además, si usa Android Studio, puede probar: Tools / Android / Synch Project con Gradle Files


0

Forzar Detener la aplicación en la configuración del dispositivo.


0

Tuve este problema y ninguna de las soluciones anteriores funcionó para mí.

La razón es probablemente el teléfono de la versión raíz que tiene cuotas disponibles o permisos de instalación de apk solo en la tarjeta sd.

Solucioné el problema usando ADB (necesitará un dispositivo rooteado):

  1. Conecte su teléfono a través de USB
  2. Inicie ADB usando adb shell
  3. Cambiar al modo root usando su
  4. crear carpeta tmp en la tarjeta sd: mkdir / sdcard / tmp
  5. cd / datos / local
  6. cree el enlace de la carpeta en la tarjeta sd: ln -s / sdcard / tmp tmp

0

Parece haber múltiples razones para este fracaso. Para mí, el problema era que en el archivo AndroidManifest había hecho referencia a una biblioteca no existente (solo en este dispositivo en particular) usando la etiqueta 'uses-library'. Después de eliminar la biblioteca que este dispositivo no tenía, la apk se instaló correctamente.


0

He usado el arquetipo androidquickstart maven y me enfrenté al mismo problema:

El nombre de mi paquete era un único androidquickstart. Según consejos anteriores

  1. He cambiado el paquete a androidquickstart.test
  2. a continuación, en AndroidManifest.xml he cambiado package="androidquickstart"a package="androidquickstart.test"y correspondientemente eliminado prueba de otras partes del xml <activity android:name=".test.HelloAndroidActivity" >a<activity android:name=".HelloAndroidActivity" >
  3. y también problemas de paquetes solucionados en archivos java (resaltados por el IDE)

0

El nombre de su paquete debe incluir palabras combinadas por puntos como com.example o prashant.mydairy ... debería funcionar bien ahora

Los archivos donde debe actualizar el nombre de su paquete son los siguientes: 1) Archivo de manifiesto 2) Archivo Gradle (módulo appp): applicationId "package.name"


1
debe ser comentario
Furqan


0

Si tiene acceso a la consola del dispositivo (adb shell), cambie los siguientes permisos:

  1. chmod 777 / datos /
  2. chmod 777 / data / local /
    Es posible que también desee intentar copiar el apk, /data/local/en cuyo caso, asegúrese de establecer los permisos correctos para el apk también.
  3. chmod 777 /data/local/myapk.apk Ahora puede intentar una instalación: pm install -r -d /data/local/myapk.apk (tenga en cuenta la ruta absoluta)

0

Parece que tener un número después del punto fue el culpable.

Tuve el mismo problema con el siguiente applicationId

org.tony.stark.125jarvis

Cambiándolo a

org.tony.stark.jarvis

Pude instalar la aplicación en los dispositivos Android.


0

Se puede obtener este error si el minSdkVersionen builde.gradlees más grande que la versión Android del dispositivo. En ese caso, debe modificar el archivo minSdkVersion.


0

eliminar código en AndroidManifest.xml:

herramientas: reemplazar = "android: appComponentFactory" android: appComponentFactory = ""

funciona.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.