Modificando imágenes en una app – Curso desarrollo ROMs – Capítulo 2

1

Una vez descargada la ROM base que utilizaremos en nuestro proyecto, que según el caso también podríamos compilar a partir del código fuente, y una vez realizado el deodex de las aplicaciones, que básicamente lo que hace es fusionar los archivo odex y apk de cada aplicación del sistema dentro del archivo apk correspondiente, y que es en principio independiente del dispositivo, podremos iniciar el customizado de nuestra ROM, que básicamente podrá incluir cambios estéticos (iconos, colores, layouts) o internos (cambios en el código de algunas aplicaciones).

Lo normal es empezar a realizar cambios en el plano estético, que generalmente son más sencillos de aplicar y que podremos probar en nuestro propio terminal sin temor a un brick, si bien los errores al realizar cambios en el framework pueden provocar algún que otro susto, por lo que es muy importante hacer copias de seguridad de los archivos que cambiamos en nuestro dispositivo, sobretodo si se trata de nuestro dispositivo de uso diario, lo que suele ser habitual, pudiendo restaurar los archivos originales mediante el recovery en caso de error, para lo cual deberemos haber rooteado el terminal antes, obviamente.

Captura de pantalla de apkManager

En general deberemos tener en cuenta que los colores, iconos y gráficos en general que son usados por varias aplicaciones se encontrarán en el archivo system/framework/framework-res.apk, y opcionalmente en algún otro apk dentro del mismo directorio, dependiendo de la ROM concreta (en el caso de Samsung el archivo system/framework/twframework-res.apk).

En cuanto a los iconos de aplicaciones concretas (reloj, calendario, settings, etc) se encontrarán en el archivo correspondiente a su aplicación en el directorio system/app.

En cualquier caso, la modificación siempre se realiza de la misma manera:

  1. Decompilación de la aplicación a modificar,
  2. Implementación de las modificaciones,
  3. Recompilación,
  4. Sustitución de archivos esenciales.

La decompilación de la aplicación debe realizarse usando la utilidad apkTool, tal como ya os hemos explicado en otras ocasiones, radicando la única complicación posible en localizar qué versión del mencionado programa se adapta a la versión concreta de Android que queremos utilizar.

Una vez realizada la decompilación, podremos realizar los cambios que deseemos, tanto en los archivos de imágenes como en los relacionados con los colores, cadenas de texto, etc, siempre teniendo en cuenta la estructura de directorios presente en las apps Android.

Captura de un directorio en el que hemos decompilado una app

En cuanto a la recompilación, puede realizarse la misma utilidad apkTool, si bien es recomendable descargar alguna utilidad, tal como apkManager, que se encargará de ejecutar la utilidad anterior con los parámetros adecuados, minimizando la probabilidad de cometer errores.

No obstante, no será posible utilizar el nuevo archivo en nuestra ROM directamente, debido al sistema de firmas de Android, siendo necesario realizar manualmente un cambio en dicho archivo para incluir el certificado original (algunos gestores incorporan la posibilidad de realizar este cambio automáticamente).

Para realizar el cambio haremos lo siguiente:

  1. Abrir el nuevo archivo apk que hemos generado usando la utilidad WinRar (que podemos descargar de forma gratuita),
  2. Abrir el antiguo archivo apk utilizando WinRar o cualquier utilidad de gestión de archivos comprimidos,
  3. Extraer los archivos AndroidManifest.xml y classes.dex y el directorio META-INF,
  4. Incluir los archivos del punto anterior en el nuevo archivo apk seleccionando como método de compresión el valor normal.

Finalmente indicar que, en el caso que en una app sólo queramos cambiar algún elemento gráfico (archivos en el directorio res/drawable*), es posible realizar los cambios directamente (sin necesidad de decompilar, recompilar y añadir firmas), pudiendo sustituirse las imágenes necesarias en la apk original usando WinRar, para lo cual deberemos recordar seleccionar como modo de compresión el valor ninguno.

Y hasta aquí el capítulo de esta semana en nuestro pequeño tutorial de desarrollo de ROMs para Android. Os recordamos que podéis hacernos llegar vuestros comentarios a través de esta misma página o bien en el hilo oficial del curso en ForoMoviles.

1 comentario

  1. Una sola duda. He realizado la tarea de traducir una aplicación China, solo el string.xml. Compilo, firmó,. Al instalarla algunos links dejan de funcionar. Probé sin hacer modificaciones y sucede igual. APKTOOL hace algo al decompilar y compilar. Me parece que el programa tiene alguna encriptacion para los links pero no logro encontrar como desactivarla.

Dejar respuesta

Please enter your comment!
Please enter your name here