Está en la página 1de 15

CURSO DE CREACIN DE ROMS PARA ANDROID

FAQSAndroid.com

INTRODUCCIN
Tras un primer curso en el que hemos aprendido a hacer una aplicacin Android hoy os traemos el recopilatorio del segundo, centrado en la creacin de una ROM. Se enfoca el curso a los usuarios noveles en este campo por lo que partiremos de una ROM existente y veremos las modificaciones que se le pueden hacer. El creador es Robert P., uno de los editores del blog que tiene a sus espaldas ya algunas aplicaciones y es miembro destacado de XDA Developers. El curso ha sido recopilado en este PDF completamente gratuito para tenerlo a mano en un solo lugar.

NDICE
1. 2. 3. 4. Preparacin del entorno. Modificando imgenes en una app. Modificando cdigo en una app. Creacin del zip con nuestra ROM.

CAPTULO 1 Preparacin del entorno


Aunque pueda parecer lo contrario, la creacin de una ROM no es un proceso complejo, aunque debe hacerse de forma metdica para evitar errores que puedan afectar al dispositivo y a sus usuarios, para lo que es fundamental probar el producto final en nuestro equipo durante unos das antes de publicar cada nueva release. Afortunadamente, no es necesario iniciar el cocinado de una ROM desde cero, sino que es posible descargar la base de la misma y empezar a realizar nuestros cambios sobre sta, para lo cual ser necesario saber qu tipo de ROM es la que deseamos cocinar, teniendo en cuenta que, en general, existen dos grandes grupos de ROMs: las basadas en el estndar AOSP (CM, AOKP, MIUI) y las basadas en los desarrollos del fabricante (Sense, TouchWiz, etc), cada una de las cuales incorpora sus propias particularidades. En el caso concreto de este tutorial desarrollaremos una ROM para ser utilizada en un Galaxy SII y basada en TouchWiz aunque, como ya os indicamos anteriormente, procuraremos ser lo suficientemente genricos como para que pueda tomarse de referencia para el desarrollo de casi cualquier tipo de ROM, con la salvedad de que algunas de las basadas en AOSP pueden desarrollarse a partir del cdigo fuente o de la compilacin oficial, recomendndose esta ltima opcin inicialmente.

Preparando el entorno
Para el desarrollo de nuestra ROM utilizaremos un ordenador personal provisto de la versin 11.04 de Ubuntu, un sistema operativo que al igual que Android se basa en Unix, y en el cual ejecutaremos la aplicacin Android Kitchen, desarrollada por dsixda, 3

reconocido desarrollador y moderador del foro XDA-Developers y que permite cocinar ROMs para ms de 60 modelos diferentes. Los usuarios de Windows pueden utilizar tambin esta aplicacin, para lo cual deben instalar cygwin, una aplicacin que permite simular un entorno Unix sobre el sistema operativo de Microsoft. La instalacin del Android Kitchen es sencilla y tan slo requiere de la descompresin del archivo zip que contiene todos los scripts y configuraciones en el directorio de nuestra eleccin, si bien ser necesario para que todo el conjunto funcione correctamente que hayamos instalado el android-sdk con anterioridad. La instalacin del software de cocinado crear los siguientes elementos en el directorio raz del programa:

original_update: Directorio en el que debemos almacenar la ROM base. scripts y tools: Carpetas que contienen el cdigo fuente del programa y las herramientas auxiliares. menu: Script de inicio del programa, que debe ejecutarse para acceder a sus funcionalidades. README: Archivo con informacin relevante sobre la aplicacin.

Descarga de la ROM base


En cuanto a la ROM que usaremos de base y que, como habamos indicado se basar ms arriba, se basar en el desarrollo oficial de Samsung, la descargaremos de SamMobile.com, el sitio oficial de descarga de ROMs de dispositivos Samsung.

Una vez descargada la ROM base, que en nuestro caso es simplemente un archivo comprimido (en formato zip o rar, segn el caso), deberemos extraer el contenido relevante de la misma (archivos factoryfs.img, cache.img y zimage) en el directorio original_update, tras lo cual podremos acceder al Android Kitchen e iniciar el cocinado de nuestra ROM. En caso que el archivo descargado de SamMobile.com fuera en formato zip, lo ms probable es que su contenido incluyera un archivo de tipo tar o tar.md5, que es el que realmente contiene la ROM de la que hay que extraer los archivos indicados en el prrafo superior.

Empezar el proceso
El archivo factoryfs.img contiene la imagen de nuestra ROM base, pero en un formato que no es fcilmente modificable, por lo que procederemos a obtener los archivos que contiene, para lo ejecutaremos el Android Kitchen y seleccionar la opcin 1, que desempaquetar los archivos en un directorio temporal incluyendo, si as lo especificamos, el CSC de la ROM, que se encuentra en el archivo cache.img. Seguidamente aadiremos el root a la ROM, seleccionando la opcin 2 y pulsando seguidamente la tecla f, que aadir el binario su y la aplicacin SuperUser.apk de ChainsDD. La opcin 3 nos permitir aadir el programa busybox, que resulta de especial relevancia para aplicaciones privilegiadas y que deberamos incluir siempre.

Usaremos la opcin 8 para definir el nombre de nuestra ROM, que aparecer cuando el usuario acceda a Configuracin Acerca del telfono.

La opcin 0 desplegar un men con opciones avanzadas, entre las que destaca la opcin nmero 11, que realiza el deodex de las aplicaciones de nuestra ROM, lo que nos permitir, posteriormente, aplicarles temas. Deberemos seleccionar la opcin f (deodex las apps en las carpetas system y framework) en el submen correspondiente, no sin antes seleccionar la opcin v para indicar que se trata de una ROM basada en Ice Cream Sandwitch (API nmero 14). Finalizado el proceso, que se prolongar durante unos minutos debido a que el sistema debe procesar ms de 100 aplicaciones, hemos obtenido como resultado una ROM bsica customizable, que encontraremos en el directorio base del Android Kitchen, y que podemos empezar a modificar; aunque eso ser en la prxima sesin.

CAPTULO 2 Modificando imgenes en una app


Una vez descargada la ROM base que utilizaremos en nuestro proyecto, que segn el caso tambin podramos compilar a partir del cdigo fuente, y una vez realizado el deodex de las aplicaciones, que bsicamente lo que hace es fusionar los archivo odex y apk de cada aplicacin del sistema dentro del archivo apk correspondiente, y que es en principio independiente del dispositivo, podremos iniciar el customizado de nuestra ROM, que bsicamente podr incluir cambios estticos (iconos, colores, layouts) o internos (cambios en el cdigo de algunas aplicaciones). Lo normal es empezar a realizar cambios en el plano esttico, que generalmente son ms 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 algn 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.

En general deberemos tener en cuenta que los colores, iconos y grficos en general que son usados por varias aplicaciones se encontrarn en el archivo system/framework/framework-res.apk, y opcionalmente en algn 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 encontrarn en el archivo correspondiente a su aplicacin en el directorio system/app. En cualquier caso, la modificacin siempre se realiza de la misma manera: 1. 2. 3. 4. Decompilacin de la aplicacin a modificar, Implementacin de las modificaciones, Recompilacin, Sustitucin de archivos esenciales.

La decompilacin de la aplicacin debe realizarse usando la utilidad apkTool, tal como ya os hemos explicado en otras ocasiones, radicando la nica complicacin posible en localizar qu versin del mencionado programa se adapta a la versin concreta de Android que queremos utilizar. Una vez realizada la decompilacin, podremos realizar los cambios que deseemos, tanto en los archivos de imgenes como en los relacionados con los colores, cadenas de texto, etc, siempre teniendo en cuenta la estructura de directorios presente en las apps Android.

En cuanto a la recompilacin, 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 parmetros adecuados, minimizando la probabilidad de cometer errores. 8

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 automticamente). 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 gestin 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 mtodo de compresin el valor normal. Finalmente indicar que, en el caso que en una app slo queramos cambiar algn elemento grfico (archivos en el directorio res/drawable*), es posible realizar los cambios directamente (sin necesidad de decompilar, recompilar y aadir firmas), pudiendo sustituirse las imgenes necesarias en la apk original usando WinRar, para lo cual deberemos recordar seleccionar como modo de compresin el valor ninguno.

CAPTULO 3 Modificando cdigo en una app


En el captulo anterior del curso prctico de desarrollo de ROMs para Android aprendimos a decompilar una aplicacin para modificar el layout de alguna de las actividades (ventanas) que la formaban, as como algunos colores o imgenes, 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 adems permiten agregar elementos diferenciadores a nuestra ROM, la mayor parte de ellos valora an ms aquellos cambios que conducen a la resolucin de algn bug, que desgraciadamente siempre existen, o a la inclusin de nuevas funcionalidades; para lo cual suele ser necesario tocar el cdigo fuente de los programas. En cualquier caso, y pese a que Android es un sistema de cdigo 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 cdigo fuente de los programas y deberemos optar por modificar el cdigo que nos proporciona el decompilador, algo que no siempre es fcil.

Como ya hemos explicado anteriormente, la decompilacin y recompilacin 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 cdigo fuente, en un formato pseudo- mquina que no resulta demasiado fcil 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, prcticamente ilegible, 10

sobretodo si su creador ha ofuscado el cdigo con el objeto de evitar la ingeniera inversa, algo que viene siendo bastante comn. En cualquier caso, para la aplicacin de un parche simplemente deberemos seguir las instrucciones del desarrollador del mismo, que nos indicar el archivo, procedimiento y lnea (o lneas) 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 ms conocida el foro XDA-Developers, que incluye sub-foros especficos para la mayor parte de los terminales Android).

Al igual que ocurra con las modificaciones relativas a imgenes, deberemos recordar aplicar la firma de la aplicacin original a la nueva aplicacin, ya que podramos tener problemas en caso de no hacerlo. Lgicamente, 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 aplicacin modificada al directorio /system/app, de forma que la aplicacin anterior ser reemplazada, procediendo tambin a eliminar los rastros de la aplicacin original del directorio /data/dalvik-cache, algo que realizaremos siempre desde el recovery.

11

CAPTULO 4 Creacin del ZIP con nuestra ROM


En captulos anteriores de nuestro curso de creacin de ROMs aprendimos a generar los archivos y programas de inicio sobre los que basaremos nuestra ROM, algunos de los cuales decompilamos para aplicar temas o parches, tras lo cual tan slo quedar empaquetar y, si es el caso, distribuir la ROM en algn foro especializado. Antes de proceder al empaquetado de la ROM deberemos asegurarnos que hemos reemplazado todos los archivos de base por los que hemos modificado, garantizando tambin que hemos conservado las firmas originales de aquellos que tienen que ver con el propio sistema o con Google, ya que en caso de no hacerlo se produciran errores.

Hecho esto, procederemos a ejecutar el Android Kitchen, que tras comprobar si existen actualizaciones nos mostrar un men con las diferentes opciones disponibles, de las cuales recomendamos activar las siguientes:

3 - Add root permissions: Rootear nuestra ROM, algo que desean todos los usuarios de ROMs cocinadas. 4 - Add busybox: Busybox es un programa que aade multitud de comandos (de Linux) a nuestro dispositivo, tales como cp (el programa que permite copiar archivos) y que luego pueden ser usados por las aplicaciones. 8 Change name of ROM: Permite cambiar el nombre que aparecer en la casilla correspondiente al nombre de la ROM en la pestaa Ajustes Informacin del telfono. 12

Seguidamente accederemos al submen de opciones avanzadas (0 Advanced options), en el que activaremos las casillas:

13 Add /data/app functionality: Esta casilla es necesaria si vamos a preinstalar algn programa en la particin de datos, permitiendo automatizar el copiado de los mismos cuando se instale la ROM, si es el caso. 15 Add Bash (command shell): Reemplaza el intrprete de comandos (shell), por una versin ms moderna y que soporta un mayor nmero de rdenes. 23 Convert update-script or updater-script: Inicialmente slo un pequeo nmero de comandos podan ser incluidos en el programa de instalacin de la ROM, los cuales se almacenaban en el archivo update-script, que fue reemplazado en posteriores versiones por el archivo updater-script, al que se le aadi un mayor nmero de comandos.

Una vez activadas las opciones anteriores, o aquellas que consideremos convenientes para nuestro proyecto, procederemos a generar el instalable de nuestra ROM, para lo cual volveremos al men principal (pulsando la opcin 0 Back to main men) en el men de opciones avanzadas, tras lo que seleccionaremos la opcin 99 Build ROM from working men.

Tras pulsar la mencionada opcin, nos aparecer un nuevo men en el que seleccionaremos la opcin 1 - interactive mode, en la que responderemos afirmativamente a todas las preguntas, lo que provocar que las aplicaciones presentes en nuestra ROM se optimizen antes de generar el zip y que el contenido de ste se firme, algo que requieren algunas versiones del recovery. Al finalizar este proceso tendremos un archivo zip con nuestra ROM cocinada en el directorio OUTPUT_ZIP (a partir de la ruta en la que hubiramos instalado el Android Kitchen), que podremos instalar en nuestro dispositivo o distribuir, segn el caso.

13

Esperamos que este tutorial haya sido de vuestro agrado y os animamos a enviarnos vuestras consultas sobre este u otros temas, para lo que podis utilizar los comentarios al final de esta pgina o nuestro foro, con el hilo abierto para este curso desarrollo ROMs.

14

El CURSO DE CREACIN DE ROMS EN ANDROID ha sido desarrollado por Robert P. para FaqsAndroid.com del Grupo bemoob.

Este obra est bajo una Licencia Creative Commons Atribucin-NoComercial- SinDerivadas 3.0 Unported. by

15

También podría gustarte