oreo - android pie
Android INSTALL_FAILED_UID_CHANGED (26)
He estado depurando Android utilizando mi Nexus 4, sin embargo, recientemente encontré este error aquí. Después de investigar un poco sobre este error, parece ser un problema que la aplicación no se elimine correctamente. La aplicación que estoy depurando funciona bien en mis otros dispositivos Android así como en los emuladores, este error solo ocurre en mi Nexus 4. Conecté mi dispositivo a la computadora y traté de eliminar las carpetas de datos / datos, pero sigo recibiendo el mismo problema. También verifiqué configuración-aplicaciones para comprobar que definitivamente se haya desinstalado.
¿Alguien tiene alguna idea de cómo resolver este problema? Según algunos usuarios, necesito acceso de root para eliminar datos / datos correctamente, ¿es así? ¿O hay otra forma de evitar esto?
A veces también debes desinstalar las carpetas de datos. Para mí, tenía un paquete en el espacio de usuario de com.kikin.cts
, y también un directorio de carpetas en /data/data/com.kikin.cts
. Se INSTALL_FAILED_UID_CHANGED
, pero después de eliminar la carpeta de datos, el error desapareció.
Aquí hay algo que las respuestas existentes no cubren. Esto me estaba pasando en el emulador. Si reinicio los datos del usuario, obtengo INSTALL_FAILED_DEXOPT la primera vez, pero INSTALL_FAILED_UID_CHANGED después de eso. Descubrí que rm -r /data/data/com.foo.bar es suficiente para restablecer al primer estado.
El verdadero culpable en mi caso es un nombre de método java que causó que dexopt fallara. Preste mucha atención a lo que hay en logcat. Esto es lo que lo delató:
I/PackageManager( 1275): Running dexopt on: com.foo.bar
E/dalvikvm( 2857): Invalid name: ''__jni_setLocation''
E/dalvikvm( 2857): Trouble with item 14787 @ offset 0x43b68
E/dalvikvm( 2857): Cross-item verify of section type 0005 failed
E/dalvikvm( 2857): ERROR: Byte swap + verify failed
E/dalvikvm( 2857): Optimization failed
W/installd( 941): DexInv: --- END ''/data/app/com.foo.bar-1.apk'' --- status=0xff00, process failed
E/installd( 941): dexopt in=''/data/app/com.foo.bar-1.apk'' out=''/data/dalvik-cache/data@[email protected]@classes.dex'' res=65280
W/PackageManager( 1275): Package couldn''t be installed in /data/app/com.foo.bar-1.apk
No puedo decirte por qué a dexopt no le gustan algunos nombres de métodos, pero ese era el problema.
Arreglo esto, tal vez funcionará para cualquier otra persona.
Reinicio mi teléfono y luego elimino algunas aplicaciones más. ¡Y vuelve a intentar la instalación, es trabajo!
Tal vez el problema se trata de almacenamiento. No sé por qué, pero es trabajo ahora. ¡Buena suerte! (Perdón por mal inglés)
De acuerdo, entonces para mi LG NEXUS 4 rooteado aquí está la solución: (
- asegúrate de tener un lugar donde la aplicación de tu trabajo esté firmada o no)
y
- desinstaló este archivo de su teléfono (si existe, por supuesto)
Digamos que es: app-debug-unaligned.apk
Ahora en la consola escribes:
adb push app-debug-unaligned.apk /sdcard/
adb shell
su
rm -fr /data/local/tmp/app-debug-unaligned.apk
rm -fr /data/data/app-debug-unaligned.apk
Ahora sal de adb y llama
adb shell su -c "pm install /sdcard/app-debug-unaligned.apk"
¿Trabajando?
Desde el shell ADB puede encontrar la solución de dos maneras. 1. mantener los datos y encontrar la solución y 2. solución sin persistir los datos
solución para 1. es ejecutar el comando adb chown -R UID:UID /data/data/your.package.name
través del símbolo del sistema de la ruta ADB.
solución para 2. es ejecutar el comando adb rm -r /data/data/your.package.name
desde la misma ruta.
El enraizamiento y el restablecimiento de fábrica no eran una opción para mí, pero pude encontrar una versión anterior de mi APK e instalarla (supongo que fue la misma que no se desinstaló correctamente). Después de desinstalar esa otra vez, pude instalar nuevas versiones.
En la mayoría de los casos, INSTALL_FAILED_DEXOPT
o INSTALL_FAILED_UID_CHANGED
significa que no tienes suficiente espacio para instalar la aplicación.
Elimine algunas aplicaciones no utilizadas de su dispositivo o al menos elimine la versión actual de su aplicación.
adb uninstall package-name
En casos muy raros, puede haber problemas con los datos de la aplicación. Tienes dos opciones dependiendo de si tu dispositivo está rooteado o no
Sin enraizar
Settings -> Backup and reset -> Factory data reset
restablecimiento de fábrica Settings -> Backup and reset -> Factory data reset
(al menos para Samsung S5)
Arraigado (o emulador)
adb shell "rm -rf /data/data/package-name"
Encontré una solución que funciona tanto en un dispositivo no rooteado como en un emulador. Si bien no puede eliminar directamente las carpetas de datos en un dispositivo no rooteado, puede utilizar el comando pm
para hacerlo:
- Ejecutar
adb shell
- Ejecute
pm uninstall <app name>
(es decir, com.example.myapp) - Ejecute
pm uninstall <test app name>
(es decir, com.example.myapp.test); es posible que reciba un error si la aplicación de prueba no se instaló antes.
Parece que por algún motivo, al desinstalar las aplicaciones de la interfaz de usuario de Android, esto no funciona (posiblemente no elimine las carpetas de datos), sin embargo, al desinstalarlo a través del comando pm
funciona.
Lo intenté en un "Nexus 5" y en un "OnePlus One".
Estaba experimentando este problema durante los últimos días en mi dispositivo de prueba Galaxy Note 3. He estado usando Calabash-Andrdoid y seguí recibiendo un error INSTALL_FAILED_UID_CHANGED, siempre que el método install_app intentó ejecutar. Estaba luchando con este problema porque tenía dos dispositivos de prueba experimentando esto. Intenté todo lo anterior, incluido el vaciado de mis carpetas / data / data / app y app.test. Incluso borré las cosas de la instrumentación que Xamarin instala, ya que esa es la plataforma que utilicé para desarrollar mi aplicación. No pude encontrar nada más para eliminar manualmente del dispositivo. Cuando intenté hacer mi trabajo en un tercer dispositivo y encontré que todo se ejecutó correctamente, me di cuenta de que el problema era con los dispositivos. Al final, lo único que funcionó para mí fue ejecutar un restablecimiento de fábrica de uno de los dispositivos. Espero que esto ayude.
Gracias, -Shah
Esto funcionó para mí:
adb shell rm -rf /system/app/<package.name>
Me encontré con el problema similar. El resultado es que no desinstaló todos los componentes de la aplicación. Mi solución es: eliminar /data/data/com.eg.android.AlipayGphone manualmente.
trabaja bien para mi
¡Espero que sea útil para ti!
Mismo problema en un dispositivo Mediacom, primero un
$ adb install -r platforms/android/out/android-debug-unaligned.apk
3958 KB/s (22887489 bytes in 5.647s)
pkg: /data/local/tmp/android-debug-unaligned.apk
Failure [INSTALL_FAILED_DEXOPT]
entonces una muy persistente :
$ adb install -r platforms/android/out/android-debug-unaligned.apk
4949 KB/s (22887489 bytes in 4.515s)
pkg: /data/local/tmp/android-debug-unaligned.apk
Failure [INSTALL_FAILED_UID_CHANGED]
Hacer un restablecimiento de fábrica no cambió la dinámica (obtuve ambos errores, en secuencia).
- instalar la misma aplicación con un ID diferente funcionó
- instalar una aplicación diferente con la ID anterior no lo hace
Rootear no es una opción, la solución para mí fue un borrado de caché: ahora el ID de la aplicación ofensiva funciona bien y no tuve que restablecer a la configuración de fábrica (nuevamente).
Espero eso ayude
Obviamente, se debe a una desinstalación incorrecta (probablemente debido a una conexión de cable defectuosa).
SOLUCIÓN Descargar SDMaid desde play-store, y eliminar archivos Corpse (archivos basura). Vuelva a ejecutar la aplicación. (Pero necesita tener su dispositivo rooteado)
Para cualquiera que ejecute pruebas de estilo Junit desde su computadora y obtenga este error, mientras la consola me decía que había un problema con mi aplicación (empaquetado en el formato ''com.myapp.stuff''), el problema real era mi paquete de código de prueba , que si está ejecutando en un dispositivo se instala como una aplicación separada con el nombre del paquete como ''com.myapp.stuff.test''. Eliminar la "aplicación" de código de prueba utilizando el administrador de aplicaciones y eliminar mi aplicación actual resolvió el problema para mí. Estoy publicando esta respuesta aquí para salvar a alguien más un momento "Duh".
Para dispositivos rooteados:
Ejecute el comando debajo
adb rm -rf /data/data/<your.package.name>
Para dispositivos no rooteados:
- Cambiar el ID de aplicación de la aplicación. Consulte este link para cambiar ApplicationId.
- Construye e instala la aplicación. La aplicación se instalará correctamente porque se trata como una nueva aplicación.
- Ahora desinstala esta aplicación. Lo cual borrará los datos.
- Ahora cambie el ApplicationId al anterior.
- Construye e instala. Magia ... Se instalará.
Para mí, el truco se hizo al desmarcar "Verificar aplicaciones a través de USB" en la sección "Opciones de desarrollador".
Para mí, había un poco más de eso. Simplemente eliminar /data/data/appfolder
no ayudó.
La razón adicional fue que mis libs externas no se incluyeron en el archivo .apk
porque el nombre de la carpeta era lib en lugar de libs . Esto causó [INSTALL_FAILED_DEXOPT]
durante la instalación de la aplicación seguida de [INSTALL_FAILED_UID_CHANGED]
.
Así que cambiar el nombre de la carpeta libs funcionó para mí en este caso.
Pensé en compartir esto en caso de que ayude a alguien ... Escribí una nueva versión de mi aplicación en Eclipse e intenté ejecutarla en mi teléfono a pesar de tener una versión un poco más antigua en el teléfono que descargué de la tienda Google Play. Eclipse apareció un diálogo preguntándome si me alegraba desinstalar la versión existente en el teléfono y acepté. La desinstalación fue defectuosa y llevó a INSTALL_FAILED_UID_CHANGED.
Probé la mayoría de las cosas sugeridas aquí sin suerte. No había un rastro aparente del APK en mi teléfono, ni ningún archivo de datos que pude encontrar para borrar, pero algo me impedía cargar el APK del eclipse en el teléfono. Tampoco pude descargar mi versión anterior de prueba beta de Google Play; la descarga procedió al 100% pero luego falló con un mensaje que informaba "error desconocido" y un número (probablemente -24).
Tenía dudas sobre el cambio de nombre de mi paquete porque ya tengo beta testers y productos integrados en la aplicación configurados con el nombre del paquete anterior, pero cambié el nombre del paquete en eclipse temporalmente y pude instalar esa nueva versión en el teléfono y luego descargarla la versión anterior de Google Play también. Ambas versiones se sentaron felizmente una al lado de la otra en el teléfono con el mismo nombre e ícono de la aplicación (pero diferentes nombres de paquetes detrás de las escenas). Podría desinstalar manualmente una o ambas arrastrando el ícono de la aplicación al ícono de desinstalación del teléfono. La desinstalación manual eliminó el conflicto y reparó la desinstalación defectuosa del eclipse, por lo que simplemente cambié el nombre de mi paquete de eclipse al nombre original y continué como antes.
Esto fue mucho menos doloroso que un restablecimiento de fábrica o cambio de nombre de paquete permanente. Probablemente solo funcione cuando el origen del error sea un conflicto entre una versión de eclipse y una versión de Google Play, pero vale la pena intentarlo si se encuentra en una situación similar.
Probablemente haya introducido un SharedUserID que causa esto.
Reinicie su dispositivo y borre su proyecto. Básicamente, la desinstalación hubiera hecho esto por usted en caso de que, si no, intente reiniciar.
Simplemente desinstale la aplicación en sí (no las carpetas de datos) y luego vuelva a instalarla, y debería estar bien. Android se queja porque es posible que haya depurado previamente la aplicación desde otra computadora.
Tengo otra solución que funciona para mí. Puede cambiar el nombre del paquete de la aplicación para que el dispositivo lo reconozca como una aplicación diferente y la instalación se complete correctamente. Puede ser útil para aquellos que no tienen acceso de administrador y tampoco desean reiniciar el dispositivo.
Tengo root en mi Nexus 5, pero nada funcionó, así que tuve que ejecutar un restablecimiento de fábrica de la configuración que funcionó.
Una solución para dispositivos no rooteados. Vaya al administrador de aplicaciones y desinstale la aplicación llamada "Selendroid" y vuelva a intentarlo. Esta solución funciona para mí.
Utilizar
adb shell
ve al caparazón.
Luego ejecuta el comando follow:
rm -rf / data / data / nombre del paquete
rellene el nombre del paquete con el suyo, como com.map.map
/data/data/my.package.name
y /data/app/my.package.name.apk
, el problema aún persiste.
sin embargo, encontré una carpeta /data/user/0/my.package.name
, elimínela y resuelva el problema.