Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Curso de Creación de ROMS
Curso de Creación de ROMS
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.
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.
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.
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.
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
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