Los cocineros de ROMs, o aquellos que alguna vez se han visto en la necesidad de decompilar una aplicación Android para modificar alguno de sus componentes, seguramente sabrán para qué sirve y cómo se utiliza la aplicación apkTool.

El proyecto apkTool, iniciado por Brut.all, desarrollador reconocido del foro XDA-Developers, y conocido entre otros temas por ser el desarrollador de un hack que permitía obtener instrucciones de voz en Google Maps cuando éstas no eran soportadas oficialmente por la empresa californiana en muchos lugares, permite la decompilación y recompilación de aplicaciones Android, lo que permite no sólo modificar los iconos y layouts (distribución de los elementos de las pantallas) sino también el código fuente de las mismas.

No obstante, esta aplicación, que había funcionado más que correctamente hasta hasta Gingerbread, ocasiona algunos quebraderos de cabeza cuando se utiliza sobre Andorid 4 ICS (Ice Cream Sandwitch), produciendo errores al tratar de decompilar o recompilar determinadas aplicaciones.


Consciente de este problema, el usuario evol4g, miembro senior del foro de desarrollo, ha publicado una guía que parece desterrar definitivamente estos problemas permitiendo, ahora sí, la modificación sencilla de aplicaciones para ICS.

Puedes encontrar el tutorial completo en XDA-Developers, pero el resumen del mismo es el siguiente:

  1. Descarga las aplicaciones necesarias (aquí encontrarás las versiones para Windows),
  2. Descomprime el archivo zip descargado en c:apktools,
  3. Copia el fichero /system/framework/framework-res.apk de la ROM para la que quieres desarrollar en el mismo directorio,
  4. Instálala usando apktool.jar.1.4.2usando el siguiente comandojava -jar apktool.jar.1.4.2 if framework-res.apkSi la ROM incluye una capa de fabricante (Sense, Touchwiz, etc), deberás instalar los archivos complementarios, tales como /system/app/SystemUI.apk y/o /system/framework/twframework-res.apk.

Una vez instaladas las aplicaciones necesarias, es posible iniciar la tarea de decompilar, modificar y recompilar los diversos programas, para lo que deberás tener en cuenta que debe utilizarse siempre la versión 1.4.3 de apktool.jar, excepto en las raras ocasiones en que ésta falle, en las que deberás usar la versión 1.4.2 para aquella operación (normalmente la decompilación) que ocasione problemas.

Comando para decompilar

java -jar apktool.jar.1.4.x d nombre-app.apk

Comando para recompilar

java -jar apktool.jar.1.4.x b nombre-app

Comando para instalar archivos de recursos

java -jar apktool.jar.1.4.x if nombre-archivo-recursos.apk




Ingeniero en Informática por la Universidad Politécnica de Cataluña.Programador en perl, php, c++, Java,...Desarrollador reconocido del foro XDA-Developers.Usuario Android desde 2009, y actualmente también desarrollador de utilidades y ROMs para ese sistema.Mi primer smartphone fue un Qtek-S100, en 2005, y desde entonces ando buscando el dispositivo perfecto. Si no fuera por la crisis cambiaría de móvil varias veces al día :)

10 comentarios

  1. Por lo menos en el S3 y en otras ROMs oficiales de Samsung recuerda que framework-res.apk tiene su propio apartado en /system/framework

  2. Hola, buenas Tardes!!
    Estoy intentando hacer el proceso de decompilar ICS pero de una Rom de Htc.
    Como lleva la capa de Sense, entiendo que debería de instalar tambien el archivo framework-htc-res.apk
    a paretd el framework-res.apk y SystemUI.apk
    Estos quedán instalados como 1.apk, 2.apk, 124.apk respectivamente en C:\Users\YO##\apktool\framework. Si esto es cierto, tengo todo lo necesario inatalado, ok???
    Pues bien, mientras que la Versión de android sea 4.0.3 si me decompila y compila correctamente, si no, me dá fallos. Sobre todo al decompliar SystemUI.apk.
    Ah!! Y una cosa que se me olvidaba….he podido decompilar 4.0.3 sin ningún problema con una app que se llama Apk Manager, pero no con apktool.
    Es decir, utilizando esta app no decompilo ni 4.0.3 ni 4.0.4 por supuesto.
    Mmmmm!! No me aclaro con esto, la verdad. Y el caso es que necesito decompilar estas apks para desarrollar una aplicacion en el PC, para Rom basadas en ICS de Htc.
    Si me pudieras orientar en algo, o ves que me he equivocao en algo, por favor….estaría agradecido.
    Mi SO es Windows 7 Pro, por si aclara algo más
    Un saludo.

  3. Este me dá cuando lo hago con el apktool, que además el que quiero utilizar.

    C:\Users\Wel>apktool d C:\SystemUI.apk C:\SystemUI
    I: Baksmaling…
    Exception in thread “main” java.lang.RuntimeException: bad magic value: 64 65 78
    0a 30 33 35 00
    at org.jf.dexlib.DexFile.(DexFile.java:377)
    at org.jf.dexlib.DexFile.(DexFile.java:274)
    at brut.androlib.src.SmaliDecoder.decode(SmaliDecoder.java:44)
    at brut.androlib.src.SmaliDecoder.decode(SmaliDecoder.java:33)
    at brut.androlib.Androlib.decodeSourcesSmali(Androlib.java:68)
    at brut.androlib.ApkDecoder.decode(ApkDecoder.java:85)
    at brut.apktool.Main.cmdDecode(Main.java:128)
    at brut.apktool.Main.main(Main.java:65)

    C:\Users\Wel>

  4. Eso es lo único que no he probado aún. La verdad. Me fui al apartado de Chef, y me dieron otra solución pero tampoco me ha ido…
    Lo que pasa es que si sigues leyendo, en el post #8 dice que todavía le sigue yendo mal….
    “too bad… stil got same error… I’m really confused….”
    De todas formas, Muchas Gracias por la ayuda ofrecida, De Corazón!!
    Si doy solución te lo comentaré, ok???
    Un saludo.

  5. Comento, como te dije….
    Lo he conseguido, pero unos post más adelante, sobre el #14 #15….
    La aplicacion de Wanam, si le quitas el clases.dex, ya la decompila y la compila con normalidad y fuera de errores. Esto el SystemUI….
    El Framework, no lleva este archivo por lo cual no hay ningún problema y trabaja de gloría!!!
    Muchas Gracias y un saludo.!!

Deja una respuesta