2012-09-09 14 views
15

tengo problema con el funcionamiento de una aplicación Android de eclipse el dispositivo verdadero androideEclipse Error de instalación: INSTALL_FAILED_UID_CHANGED

cuando hago clic en Ejecutar sólo me muestra este error: error Instalación: INSTALL_FAILED_UID_CHANGED

Logcat:

[2012-09-09 14:38:26 - SearchApp] Android Launch! 
[2012-09-09 14:38:26 - SearchApp] adb is running normally. 
[2012-09-09 14:38:26 - SearchApp] Performing com.example.MainActivity activity launch 
[2012-09-09 14:38:26 - SearchApp] Automatic Target Mode: using device 'cff192abd7f551f' 
[2012-09-09 14:38:26 - SearchApp] Uploading SearchApp.apk onto device 'cff192abd7f551f' 
[2012-09-09 14:38:27 - SearchApp] Installing SearchApp.apk... 
[2012-09-09 14:38:28 - SearchApp] Installation error: INSTALL_FAILED_UID_CHANGED 
[2012-09-09 14:38:28 - SearchApp] Please check logcat output for more details. 
[2012-09-09 14:38:28 - SearchApp] Launch canceled! 

Respuesta

11

Finalmente encontré LA SOLUCIÓN PARA INSTALL_FAILED_DEXOPT y INSTALL_FAILED_UID_CHANGED ERROR

Después de muchas pruebas varían de un trucos en vano, al final encontré la principal solución para resolver este problema pegajosa para siempre!

¡Creo que el problema está causado por un error de Eclipse! , de hecho, eclipse no puede copiar e instalar el archivo APK creado solo por un nombre de cadena (se describe más adelante)

Debo agregar que cuando usa trucos en Internet como eliminar carpeta de nombre de paquete en datos/datos, se encontrará con un nuevo error pegajosa "INSTALL_FAILED_DEXOPT"

por lo que permite ver cómo resolver INSTALL_FAILED_DEXOPT y INSTALL_FAILED_UID_CHANGED

En mi caso, cuando verifico el gato registro noté debajo de las líneas:

09-30 19:03:19.882: I/PackageManager(314): Running dexopt on: com.example.searchapp 
09-30 19:03:19.921: E/dalvikvm(6129): Invalid name: 'search_‌country_name' 
09-30 19:03:19.921: E/dalvikvm(6129): Trouble with item 226 @ offset 0x2094 
09-30 19:03:19.921: E/dalvikvm(6129): Cross-item verify of section type 0004 failed 
09-30 19:03:19.921: E/dalvikvm(6129): ERROR: Byte swap + verify failed 
09-30 19:03:19.961: E/dalvikvm(6129): Optimization failed 
09-30 19:03:19.961: W/installd(144): DexInv: --- END '/data/app/com.example.searchapp-1.apk' --- status=0xff00, process failed 
09-30 19:03:19.961: E/installd(144): dexopt failed on '/data/dalvik-cache/[email protected]@[email protected]' res = 65280 
09-30 19:03:19.961: W/PackageManager(314): Package couldn't be installed in /data/app/com.example.searchapp-1.apk 

Como se puede ver la segunda línea es: nombre no válido: 'search_country_name'

Este es uno de mis nombres de cadena en String.xml

Así que borrar esta cadena y comentar todo Códigos de referencia

Luego elimino la carpeta del nombre del paquete en/data/data (si está utilizando un dispositivo real, debe tener acceso raíz, si está usando emulador simplemente borre datos antes de abrir el emulador o crear un nuevo AVD)

¡Ahora el problema está resuelto!

¡Puede seguir codificando fácilmente!

+0

¿cuál es la forma más segura de obtener acceso de root al dispositivo? – davidtingsu

+0

hay algunas formas de rootear dispositivos Android que pueden encontrarse fácilmente en la red y no hay ningún problema de seguridad con ellos. debe tener cuidado con la instalación de aplicaciones desconocidas que necesitan acceso raíz después de rootear el dispositivo, pueden dañar su dispositivo –

+0

Bueno, no para mí ... Tengo una aplicación con el nombre dado del paquete "dañado" en la tienda GooglePlay, y un dispositivo no rooteado (que no tengo permiso para rootear). Por lo tanto, no puedo ni rootear ni cambiar ID/nombre del paquete. También una cosa más: NO ES UN ERROR DE ECLIPSE, porque también ocurre en AndroidStudio, o incluso installig a través del comando adb directamente. – mthama

2

Es posible que la aplicación no haya sido desinstalada correctamente. Puede haber una carpeta de datos omitida. Intente eliminar manualmente la carpeta de datos de la aplicación e intente instalar la aplicación nuevamente.

+0

i ya han hecho todo esto y también otros trucos encontrados en la red, ¡pero ninguno de ellos ayudó! eventualmente hice el resto de mi trabajo en ese proyecto en otro sistema operativo –

0

Como alternativa, elimine el emulador y vuelva a configurarlo de nuevo.

4

Esta solución finalmente funcionó para mí con ninguna raíz:

$ platform-tools/adb -d install /path/to/proj/bin/foo.apk 
797 KB/s (4872885 bytes in 5.963s) 
pkg: /data/local/tmp/foo.apk 
Success 
$ platform-tools/adb -d uninstall com.example.foo.bar 
Success 

No entiendo perfectamente por qué esto funcionó cuando se instala desde Eclipse no funcionó para el mismo APK, pero estoy feliz de mover en ...

+0

No puedo instalar ni desinstalar –

+1

Eclipse/adt no elimina el antiguo apk, intenta hacer una actualización/reinstalación, que puede fallar en varios casos (falta de coincidencia de certificado, etc.). En esos casos, primero debe desinstalar manualmente. –

+0

@ChrisStratton - gracias, eso tiene mucho sentido en retrospectiva. –

0

Puede ser cualquiera ayudar ...

tengo dispositivo raíz de depuración.Algunas veces hago una copia de seguridad de mis datos de aplicación desde /data/data/my.package y luego los restauro mediante adb shell. Antes de la restauración, elimino la carpeta my.package, vuelvo a crear y copio otras subcarpetas y archivos. Después de esto, en el siguiente cambio y ejecute el proyecto desde eclipse, obtenga el error INSTALL_FAILED_UID_CHANGED.

Mi error: No debería haber sido eliminado la carpeta my.package. Debo eliminar solo todo en esta carpeta, porque en la carpeta de recreación obtengo la nueva carpeta de propietario my.package.

0

Hay un medio para ello. Si no tiene un dispositivo rooteado y tampoco puede acceder a/data/data/folder, simplemente reinicie su dispositivo. Eliminará todo de la carpeta de datos y podrá instalar la aplicación limpia nuevamente. El único inconveniente es que todo se borrará de su teléfono.

0

Tuve este problema en el emulador. Eliminé el avd y creé uno nuevo. El problema desapareció

4

he intentado todo esto responde pero ningún efecto

desinstalación uproperly.

solución: Simplemente, reiniciar la almohadilla

0

Ya existe un directorio de datos con el nombre del paquete que está intentando instalar con un UID distinto asignado. Obtener un acceso root y luego intente eliminar el directorio ya existe con el siguiente comando cmd

rm -r /data/data/com.your.package 

O tratar de cambiar el nombre de su paquete de solicitud de ejecutarlo en su dispositivo.

+0

¿dónde debería ejecutar este comando? – slier

+0

debe ejecutar en adb shell, pero esta no es una buena solución, ya que necesita que el dispositivo sea rooteado – mthama

0

De modo que si desciende para encontrar esto ... nada podría haber funcionado para usted. Sin embargo, hay una solución fácil para esto. Obviamente, se debe a una desinstalación incorrecta (probablemente debido a una conexión de cable defectuosa).

SOLUCIÓN Descarga SDMaid del juego de la tienda, y eliminar archivos basura Corpse (archivos). Vuelva a ejecutar la aplicación. (Sin embargo, es necesario tener su dispositivo arraigado)

0

Esta solución funcionó para mí:

  1. Ponga el archivo APK a la tarjeta de almacenamiento/SD del dispositivo

  2. adb shell pm install -l -r "/sdcard/<apk_filename>.apk"