PDA

Ver la Versión Completa : Error al instalar APK en Froyo oficial


Croc
22/12/10, 14:36:23
Hola!

Tengo un problema que no tengo mucha fe en que alguien me lo pueda solucionar, pero voy a intentarlo.

Haciendo borrón y cuenta nueva del móvil, he instalado la actualización europea a Froyo sobre la original Vodafone 1.6. Todo fue bien y funciona perfectamente. Después conseguí root manualmente (el SuperOneClick ese no me funcionó bien en Ubuntu, así que lo hice todo a mano (rageagainstthecage, su, busybox y Superuser.apk) y aplicaciones como el SetCPU van estupendamente.

Mi problema viene cuando quiero sustituir la Gallería 3D que viene de serie con una 2D. En CyanogeMod 6 era bien sencillo: se remontaba el /system para escritura, se eliminaba el APK de la gallería de serie y le metía un Gallery.apk que había encontrado por los foros de XDA. Pero esto no funciona en el Froyo oficial. Cuando voy a instalar el nuevo APK me dice:

Installation error: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE

en consola de adb y en el logcat:

ERROR/PackageManager(56): Package com.android.google.gallery has no signatures that match those in shared user android.media; ignoring!
WARN/PackageManager(56): Package couldn't be installed in /data/app/ com.android.gallery-1.apk

Y así estoy en un punto muerto. Por la poca información que he encontrado hay un problema entre la firma (en el Manifest.xml) del APK y uno que hay en el packages.xml al que hace referencia llamado android.media. ¿Qué puedo hacer? Ojalá algún desarrollador/cocinero puedo echarme algo de luz...

Un saludo!

Croc
22/12/10, 17:57:45
Hola!

He hecho progresos sobre este tema, así dejo constancia de ellos y animo a cualquier a investigar o avanzar por este camino.

Según he leído, cada aplicación en Android tiene su propio entorno de ejecución independiente del resto de aplicaciones, llamado "sandbox" y que se le otorga un ID de usuario Linux independiente. Cuando dos aplicaciones quieren compartir algo, la aplicación que quiere acceder a su "sandbox" necesita especificar en su AndroidManifest.xml su ID o alias de paquete (mediante el atributo "sharedUserId" de la etiqueta raíz "manifest").

Hasta aquí todo bien. La galería 2D que quería instalar quería acceder al sandbox del paquete del sistema "android.media" (a saber para qué, puede que solo para compartir los permisos ya otorgados) y así lo tenía especificado en su XML. El problema viene que, por medidas de seguridad, ésto solo funciona si, aparte de especificar el ID, ambas aplicaciones deben estar firmadas por el mismo certificado. El paquete "android.media" está firmado por Google, la galería 2D que me he descargado vete a saber qué certificado usa (probablemente uno autofirmado por cualquiera), y se queja. Como no podemos firmar en nombre de Google por motivos obvios hay que pensar otra solución y me arremangué la camisa.

Con la utilidad ApkTool decompilé el APK de la galería, modifiqué su AndroidManifest.xml y eliminé el atributo "sharedUserId" con la esperanza de que realmente no necesite nada importante de ese paquete (si son sólo permisos se le dan por separado y listos). Volví a crear el paquete con la misma herramienta y tuve que refirmarlo usando la utilidad SignApk utilizando el mismo certificado de prueba que lo acompaña (tampoco quiero ser de "confianza"). Y así, conseguí instalarlo.

Mi emoción iba en aumento cuando incluso conseguí lanzarla. Pude ver las carpetas de fotos y su previsualización, pero cuando accedí a una de ella para verla en grande: FC como un castillo y la siguiente traza en logcat:

E/AndroidRuntime(23127): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.gallery/com.android.camera.ViewImage}: java.lang.Ru
ntimeException: Binary XML file line #14: You must supply a layout_width attribute.

Tengo tres teorías al respecto:
a) Al decompilar y volver a compilar el APK algo se ha perdido de algún Layout (que podría ser, quién sabe)
b) Eliminar el sharedUserUid tiene consecuencias impredecibles (por el tipo de error no parece que sea eso, pero vete a saber)
c) La galería directamente no es compatible con esta ROM (aunque también es raro porque con CyanogenMod 6.1 funcionaba bien el mismo APK y también es Froyo 2.2.1)

¿Alguien tiene alguna idea?

chorch
22/12/10, 19:13:06
es complicado meterse en la modificaciones de los apk, yo por eso para evitar tal complicacion en mis roms entrego un app llamada picture folder, que es una galeria 2d mas rapida que las anteriores con multitouch, te la recomiendo, y funciona a la par con la 3d
otra cosa, no es tan facil adaptar aplicaciones como estas, te doy un ejemplo, a mi siempre me gusto el mms.apk de cyanogen y no tanto el de la ota y para reemplazarlo y que funcione bien me llevo un buen rato. ambas son de fryo 2.2.1 y asi mismo no eran del todo compatibles, el phone.apk de cyano me resigne a que no va correr nunca en la ota.

Croc
23/12/10, 09:49:49
es complicado meterse en la modificaciones de los apk, yo por eso para evitar tal complicacion en mis roms entrego un app llamada picture folder, que es una galeria 2d mas rapida que las anteriores con multitouch, te la recomiendo, y funciona a la par con la 3d
otra cosa, no es tan facil adaptar aplicaciones como estas, te doy un ejemplo, a mi siempre me gusto el mms.apk de cyanogen y no tanto el de la ota y para reemplazarlo y que funcione bien me llevo un buen rato. ambas son de fryo 2.2.1 y asi mismo no eran del todo compatibles, el phone.apk de cyano me resigne a que no va correr nunca en la ota.

Me consuela saber que no soy el único que ha intentado ésto. Yo ya me he rendido y lo he dado por imposible con esa galería. He buscado en el Market la que comentas y he instalado la que se llama "QuickPic (Picture Folder)" y tiene muy buena pinta por lo poco que he probado. Gracias por el apunte :)

Un saludo!

chorch
23/12/10, 16:49:16
aca te dejo el apk que te decia, te lo subi a mediafire
http://www.mediafire.com/?ctwps6ofszt8sf8