Emulador de Android: error de instalación: INSTALL_FAILED_VERSION_DOWNGRADE

142

Actualmente estoy tratando de compilar y probar una pequeña aplicación de Android.

Estoy usando Eclipse y tengo instalado SDK 4.2 (Api Nivel 17). He puesto

<uses-sdk android:targetSdkVersion="17" android:minSdkVersion="8" />

aunque también he probado diferentes valores (es decir, 17/17).

No utilizo ninguna función de GoogleAPI, ni utilizo funciones que no están disponibles en el API Nivel 8. O al menos no obtengo ningún error de compilación o advertencia al respecto.

Cuando compilo el proyecto y lo ejecuto en un dispositivo real con Android 2.2.1, la aplicación funciona bien. Sin embargo, cuando intento ejecutar la aplicación en un emulador (dispositivo virtual Android) con Android 4.2, nivel 17 de la API, aparece el siguiente error:

[2012-12-10 21:10:29 - SoftKeyboard] Installation error: INSTALL_FAILED_VERSION_DOWNGRADE
[2012-12-10 21:10:29 - SoftKeyboard] Please check logcat output for more details.
[2012-12-10 21:10:29 - SoftKeyboard] Launch canceled!

Logcat sin embargo está vacío. Realmente no tengo idea, qué significa este error ...

ndbd
fuente

Respuestas:

353

Significa que está intentando instalar una aplicación con el mismo packageName que una aplicación que ya está instalada en el emulador, pero la que está intentando instalar tiene un código de versión más bajo (valor entero para su número de versión).

Es posible que haya instalado desde una copia separada del código donde el número de versión era mayor que la copia con la que está trabajando en este momento. En cualquier caso, ya sea:

  • desinstalar la copia instalada actualmente

  • o abra la Configuración de su teléfono> Administrador de aplicaciones para determinar el número de versión de la aplicación instalada, y aumente su <manifest android:versionCode nivel en el Manifiesto de Android.

  • o https://stackoverflow.com/a/13772620/632951

Alexander Lucas
fuente
1
¡Gracias! Fue exactamente eso: exprimí el ejemplo de Softkeyboard de un SDK anterior, y parece que ya está instalado un ejemplo de Softkeyboard (¿de forma predeterminada ?!) en los dispositivos del emulador (pero en una versión posterior diferente). Después de cambiar el nombre de mi solicitud Todo ha funcionado como se esperaba ...
NDBD
2
@Alexander: ¿Puedes actualizar esta respuesta para incluir la bandera -d?
David Alves
8
No es necesario desinstalar la aplicación. Use flags: -r -d Estas banderas significan reinstalar y degradar.
petrsyn
1
@petrsyn: ¿dónde pongo estas banderas en Eclipse?
Violet Giraffe
2
@VioletGiraffe se usa en la línea de comandos: adb install -r -d Application.apk
petrsyn
61

También puede considerar agregar un -dindicador a la instalación de adb. Debería ignorar este error.

adb install -r -d abc.apk
gruszczy
fuente
8
Indocumentado pero parece funcionar. Tuve que escribirlo por separado como -d, combinándolo con -r como -rd no funcionó.
mhsmith
3
Está documentado ahora: -d: allow version code downgrade. Todavía necesito -r
separarme
1
De documentos (2020): -d: allow version code downgrade (debuggable packages only)
Alex.K.
30

Primero desinstale su aplicación del emulador:

adb -e uninstall your.application.package.name

Luego intente instalar la aplicación nuevamente.

usuario1719362
fuente
8
O para un dispositivo físico conectado adb -s DEVICESERIALNUMBER uninstall your.application.package.name, donde DEVICESERIALNUMBERse puede encontrar usando adb devices -l.
Joel Purra
Parece un paso innecesario si solo quieres depurar una aplicación.
IgorGanapolsky
8

Esto estaba sucediendo en mi proyecto porque estaba usando un recurso XML para configurar el código de versión.

AndroidManifest.xml:
android:versionCode="@integer/app_version_code"

app.xml:
<integer name="app_version_code">64</integer>

Esto no fue un problema en versiones anteriores de adb, sin embargo, a partir de platform-toolsr16 esto ya no se resuelve en el entero adecuado. Puede forzar la reinstalación utilizando adb -ro evitar el problema por completo utilizando un literal en el manifiesto:

android:versionCode="64"
James Wald
fuente
Este fue el problema para mí, y estoy de acuerdo con que no está resolviendo el código de versión correctamente, incluso aumentarlo (por ejemplo: 65) no evita la INSTALL_FAILED_VERSION_DOWNGRADE
Stan Kurdziel
5

Esto puede suceder al intentar instalar un APK de depuración / sin firmar encima de un APK de lanzamiento firmado de Play Store.

H:\>adb install -r "Signed.apk"
2909 KB/s (220439 bytes in 0.074s)
        pkg: /data/local/tmp/Signed.apk
Success

H:\>adb install -r "AppName.apk"
2753 KB/s (219954 bytes in 0.078s)
        pkg: /data/local/tmp/AppName.apk
Failure [INSTALL_FAILED_VERSION_DOWNGRADE]

La solución a esto es desinstalar y luego reinstalar o volver a ejecutarlo desde el IDE.

Deanna
fuente
No soy el votante negativo, pero supongo que esta no es la única razón por la que eso puede suceder.
Viccari
3

INSTALL_FAILED_VERSION_DOWNGRADE

Todas las aplicaciones de Android tienen un nombre de paquete. El nombre del paquete identifica de forma exclusiva la aplicación en el dispositivo. Si el mismo packageName que la aplicación que ya está instalada en el dispositivo, aparece este error .

  1. Puede desinstalar la aplicación de su dispositivo primero y luego instalar la nueva.
  2. Simplemente puede aumentar el número en uno cada vez que se lanza una nueva versión .
IntelliJ Amiya
fuente
1
Tiene razón, el código de versión debe incrementarse en cada versión. Sin embargo, no en el momento del desarrollo antes de un lanzamiento. Además, debe poder instalar un apk con el mismo código de versión encima de un apk ya instalado (sin desinstalar). Mi presentimiento es que el problema era el
código de
3

En Marshmallow, recibí este error,

Installation error: INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE
Please check logcat output for more details.
Launch canceled!

Buscando una solución, busqué y vine aquí. Eliminé la aplicación pero aún tengo este problema en Nexus 6. Más tarde descubrí que en,

Settings > Apps > [My app name] have to removed for all user. 
karim
fuente
2

Según el código sdk src de ... \ android-22 \ android \ content \ pm \ PackageManager.java

/**
 * Installation return code: this is passed to the {@link IPackageInstallObserver} by
 * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
 * the new package has an older version code than the currently installed package.
 * @hide
 */
public static final int INSTALL_FAILED_VERSION_DOWNGRADE = -25;

si el nuevo paquete tiene un código de versión anterior al paquete actualmente instalado.

zhijuexu
fuente
aunque no debería suceder con la misma versión
Código
2

Estaba teniendo el mismo problema Recibí un error cuando intenté ejecutar en mi dispositivo Android, no en el emulador .

sudo ionic run android 

Soy capaz de arreglar esto ejecutando

adb uninstall com.mypackage.name
Anjum ...
fuente
2

puedes probar esto: adb install -r -d -f your_Apk_path

baiiu
fuente
1

Esto me sucedió cuando importé una aplicación de Android Studio en eclipse.

Descubrí que el archivo andoridmanifest.xml debe modificarse ligeramente al importar desde un proyecto de estudio de Android. Creé un nuevo proyecto de prueba y copié los encabezados para que coincida. voila, problema resuelto.

BrayNShock
fuente
1

Este error aparece en mi proyecto de Android con varios tipos de archivos gfx. Al final no se aceptó ningún cambio en el archivo de manifiesto.

Debido a mi falta de conocimiento sobre los dispositivos Android, olvido que mi dispositivo de prueba tiene un segundo Usuario. Este usuario también tiene una versión instalada de mi aplicación, por lo que también tengo que eliminar la aplicación para esta cuenta de usuario y funciona.

norca
fuente
0

Lo que siguió matándome fue que no sabía que esta aplicación estaba instalada para mi cuenta de invitado (aunque la había desinstalado para las otras cuentas ...)

así que busqué la aplicación en el administrador de aplicaciones y simplemente hice clic en desinstalar para todos los usuarios

ingrese la descripción de la imagen aquí

abbood
fuente
0

Simplemente desinstale el Apk anterior e instale el APK actualizado

Peter
fuente
0

Puede ser un problema con las dependencias de los servicios de Google Play en lugar de un problema real de la versión de la aplicación.

A veces, NO es el caso que:

a) hay una versión existente de la aplicación instalada, más reciente o no b) hay una versión existente de la aplicación instalada en otra cuenta de usuario en el dispositivo

Entonces el mensaje de error es simplemente falso.

En mi caso, tuve:

implementation 'com.google.android.gms:play-services-maps:16.0.0'
implementation 'com.google.android.gms:play-services-location:16.0.0'
implementation 'com.google.android.gms:play-services-gcm:16.0.0'

Pero cuando lo intenté

implementation 'com.google.android.gms:play-services-maps:17.0.0'
implementation 'com.google.android.gms:play-services-location:17.0.0'
implementation 'com.google.android.gms:play-services-gcm:17.0.0'

Obtuve errores relacionados con androidX, ya que aún no había actualizado a androidX y no estaba listo para hacerlo. Descubrí que el uso de las últimas versiones 16.xy funciona y ya no recibo el mensaje de error. Además, podría esperar hasta más tarde, cuando esté listo, para actualizar a androidX.

implementation 'com.google.android.gms:play-services-maps:16.+'
implementation 'com.google.android.gms:play-services-location:16.+'
implementation 'com.google.android.gms:play-services-gcm:16.+'
auspicioso99
fuente