Modificando código en una app – Curso desarrollo ROMs – Capítulo 3

2

En el capítulo anterior del curso práctico de desarrollo de ROMs para Android aprendimos a decompilar una aplicación para modificar el layout de alguna de las actividades (ventanas) que la formaban, así como algunos colores o imágenes, lo que nos permitirá aplicar nuestros propios temas a la ROM.

No obstante, y pese a que los usuarios valoran este tipo de cambios, que además permiten agregar elementos diferenciadores a nuestra ROM, la mayor parte de ellos valora aún más aquellos cambios que conducen a la resolución de algún bug, que desgraciadamente siempre existen, o a la inclusión de nuevas funcionalidades; para lo cual suele ser necesario tocar el código fuente de los programas.

En cualquier caso, y pese a que Android es un sistema de código abierto, la licencia con la que se publica no afecta a las aplicaciones ni a las capas que incluyen el fabricante o el operador correspondiente, tales como Sense (HTC) o TouchWiz (Samsung), por lo que en la mayor parte de los casos no podremos realizar los cambios en el código fuente de los programas y deberemos optar por modificar el código que nos proporciona el decompilador, algo que no siempre es fácil.

Captura de pantalla del contenido de una app

Como ya hemos explicado anteriormente, la decompilación y recompilación de las aplicaciones se realiza mediante la utilidad apkTool, creada por Brut.all, desarrollador de reconocido prestigio en el mundillo Android, si bien en este caso nos fijaremos en el directorio smali, que es el que contiene el código fuente, en un formato pseudo-máquina que no resulta demasiado fácil de seguir.

A partir del directorio smali encontraremos los diferentes paquetes y clases que ha definido el desarrollador, no siendo necesario que entendamos el contenido de dichos archivos, cuyo hilo estructural es, como hemos indicado, prácticamente ilegible, sobretodo si su creador ha ofuscado el código con el objeto de evitar la ingeniería inversa, algo que viene siendo bastante común.

En cualquier caso, para la aplicación de un parche simplemente deberemos seguir las instrucciones del desarrollador del mismo, que nos indicará el archivo, procedimiento y línea (o líneas) que debemos modificar, tras lo cual procederemos al recompilado (existen multitud de fuentes en las que encontrar optimizaciones o modificaciones de apps Android, siendo la más conocida el foro XDA-Developers, que incluye sub-foros específicos para la mayor parte de los terminales Android).

Código fuente de una app decompilada

Al igual que ocurría con las modificaciones relativas a imágenes, deberemos recordar aplicar la firma de la aplicación original a la nueva aplicación, ya que podríamos tener problemas en caso de no hacerlo.

Lógicamente, deberemos testear los cambios introducidos en nuestro dispositivo antes de incluirlos en nuestra ROM, para lo cual iniciaremos el dispositivo en modo recovery y copiaremos la aplicación modificada al directorio /system/app, de forma que la aplicación anterior será reemplazada, procediendo también a eliminar los rastros de la aplicación original del directorio /data/dalvik-cache, algo que realizaremos siempre desde el recovery.

La próxima semana aprenderemos a generar el zip con nuestra ROM cocinada, así como la utilidad de los principales comandos que podemos incluir en nuestro script de instalación.

Mientras tanto, os animamos a dejarnos vuestros comentarios en esta página o en el hilo oficial del curso de desarrollo de ROMs, en ForoMóviles.

2 comentarios

  1. Hola, tengo una duda, tengo una rom que quiero modificar para reparar un bug, ya que en esta el wifi no funciona y quiero reparar ese defecto, no se si pudieran explicar eso

Dejar respuesta