Acceder

Ver la Versión Completa : [ TUTORIAL ] Introducción a la cocina para Xperia


Kiamu
12/05/13, 21:42:20
INTRODUCCIÓN


El objetivo de este tutorial es facilitar la incursión de la gente en el mundo de las ROM personalizadas. Mostraremos que partiendo desde 0 a partir de un firmware de Sony podemos crear nuestra propia ROM personalizada. Aunque los ejemplos estén basados en un Xperia S este tutorial está pensado para Smarthphones Sony. He hecho un esfuerzo y he usado Windows para hacer el tutorial (xD)
Tú eres el único responsable de los problemas que puedan surgir en tu telefono o ordenador al seguir este manual. No me hago responsable de nada.

Nota: Los aportes y correcciones son muy bien bienvenidos.



RECURSOS




7zip (http://www.7-zip.org/)
Notepad++ (http://notepad-plus-plus.org/)
Flashtool (http://androxyde.github.io/)
Auto-Sign (http://forum.xda-developers.com/attachment.php?attachmentid=147834&d=1232310728)
Android Kitchen (http://forum.xda-developers.com/showthread.php?t=633246)
Archivo META-INF (https://mega.co.nz/#!WwQjSJTI!OoQdpl_2ynhWxtpdSrXGbWYw8_hXpYiMQouyTm0 Rg5s)
Virtuous Ten Studio (http://www.virtuous-ten-studio.com/)

Hacer este tutorial me ha llevado horas de trabajo, si te ayuda no olvides pulsar el botón gracias. Si lo usas para crear tu ROM se aceptan agradecimientos también :D
No olvides agradecer también su labor a gente que ha hecho los programas que se usan aquí como dsixda (usuario de XDA-Developers)

Kiamu
12/05/13, 21:43:02
CONSTRUYENDO LA BASE


PRIMER PASO: OBTENER UN ARCHIVO PARA FLASHTOOL

1.) Mediante Sony PC Companion, Sony Update Service o EMMA actualizamos o reparamos el firmware de nuestro Xperia. Este proceso descargará varios archivos a nuestro PC que nos permitirán crear el archivo TFT que queremos.
2.) Una vez descargados los archivos vamos a la carpeta que los contiene, por ejemplo para EMMA es esta:
Si descargamos la actualización con Sony PC Companion o Sony Update Service, esta se descargará en una carpeta temporal oculta. Nos ponemos en C./ y en la barra de herramientas vamos a "Organizar"/ "Opciones de carpeta y búsqueda" y dentro seleccionamos la pestaña "Ver" - Archivos y carpetas ocultos - Mostrar archivos, carpetas y unidades ocultos. Ahora en C:/ debería aparecer una carpeta llamada "Program Data". Ahí dentro estarán ,por ejemplo en Sony Ericsson/ Update Engine/ db/ NUMERO/ blob_fs.

http://img442.imageshack.us/img442/5287/1archivosparahacertfto.png

3.) Copiamos los archivos seleccionados en la imagen (FILE_279195486 y FILE_279216871 en el ejemplo) en otra carpeta que crearemos con este fin.
4.) Abrimos el programa Flashtool, este manual está realizado sobre la versión v0.9.10.1, y seleccionamos Tools/Decrypt Files. Ahí en "..." seleccionamos la carpeta donde hemos guardo los archivos y pasamos ambos archivos al lado derecho "Files to convert". Aceptamos y dejamos que Flashtool trabaje con los archivos. Cuando acabe saldrá esta pantalla.

http://img19.imageshack.us/img19/5060/2enflashtool.png

http://img600.imageshack.us/img600/4696/90189454.png


5.) Pasamos al lado derecho "Firmware Content" todos los archivos excepto "simlock.ta". Rellenamos con los siguientes datos. Realmente da igual equivocarse, simplemente son etiquetas.
Device: LT26i (O el que sea)
Version: La versión de ese firmware (ej: 6.A.2.0.100)
Branding: SEMC
Aceptamos. En la siguiente pantalla seleccionamos nuestro modelo de dispositivo para que agregue el "loader.sin" y volvemos a aceptar. El archivo resultante se guarda automáticamente en C:/Flashtool/Firmwares

Idea: Ahora puedes subir este archivo y compartirlo con el resto. Es una gran aportación cuando Sony lanza un nuevo firmware, así ayudas a la gente con terminales no libres a actualizar fácilmente a través de Flashtool.

Importante: Hay una forma de "engañar" a los programas oficiales de Sony para hacerles creer que somos de otra zona y así descargarnos esa actualización. Concretamente es editando estas lineas en build.prop.

ro.product.name=
ro.build.fingerprint=
ro.semc.version.cust=
ro.semc.version.cust_revision=
AQUÍ (http://www.htcmania.com/showthread.php?t=626227) tienes un hilo que trata sobre este tema.



SEGUNDO PASO: OBTENER UN ZIP PARA RECOVERY

En el apartado anterior vimos como crear nuestro propio TFT. Ahora vamos a darle uso. Como habreis visto todas las ROM vienen en un formato tan conocido como ".zip" y no en TFT. El formato .zip es fácilmente instalable desde nuestro propio Xperia mediante un recovery. Además es relativamente sencillo de hacer nuestras propias modificaciones sobre el. Vamos a aprender a crear uno.

1.) Con Flashtool instalamos nuestra ROM en el Xperia. Es un proceso muy sencillo y explicado, así que no voy a entrar en ello.
2.) Cuando acabe encendemos nuestro telefono, nos hacemos ROOT y instalamos un recovery. Busca como, hay montón de guías.
3.) Entramos en el recovery y hacemos un Backup. Cuando acabe conectamos nuestro Xperia al PC.
4.) Vamos a donde esté nuestro Backup, en mi caso es con un recovery CWM así que lo encontraremos en:
Xperia S/clockworkmod/FechaDeLaRom
5.) Solo nos interesa el archivo "system.ext4.tar" lo copiamos a nuestro PC. Este es un archivo que se abre con un descompresor, recomiendo usar "7zip".Si lo abrimos tendremos una carpeta system con algo parecido a esto:

http://img708.imageshack.us/img708/4060/97008448.png


6.) Extraemos todo en una nueva carpeta creada para este fin y empezamos a prepararla.
7.) Empieza el preparado del zip. Lo primero es volver a comprimir las carpetas creadas, esta vez lo comprimimos en formato ".zip"

http://img708.imageshack.us/img708/1206/24264550.png


8.) El problema es que este zip así no nos sirve, si lo intentamos instalar el recovery dará un error, debe de estar "firmado". Hay varias formas de firmar un archivo zip para que lo admita el recovery, por ahora usaremos el programa "Auto-Sign".

9.) Copiamos nuestra ROM a la carpeta de "Auto-Sign" con el nombre de "Update.zip"

http://img4.imageshack.us/img4/8715/65554584.png


10.) Nos tiene que aparecer "Update.zip" subrayado en verde, entonces en la ventana desplegable seleccionamos "Update.zip" y pulsamos "Auto-Sign". Nos dirá que ha creado un nuevo archivo llamado "update_signed" y quedará "como que no ha funcionado" simplemente es tener paciencia y esperar un par de minutos. Más o menos cuando el archivo final ocupe 2-3 Mb más que el original habrá acabado. Podemos renombrar la ROM como queramos.

http://img28.imageshack.us/img28/1471/88333812.png

http://img23.imageshack.us/img23/315/35013189.png


11.) Nuestra ROM aún no sirve para instalar desde un recovery, nos queda decirle al recovery como instalarla. Bien, si abrimos el "update_signed.zip" vemos que tenemos una nueva carpeta "META-INF". Para no liarnos, he decido dar este paso hecho. Nos bajamos el archivo "META-INF", descomprimimos y lo soltamos dentro de de la ROM. Posteriormente aprenderemos más sobre esto, pero por ahora así nos vale.
Atención: El updater-script puede no funcionar correctamente. Está probado sobre un Xperia S con Jelly Bean.

Ahora tenemos una ROM instalable desde Recovery, podemos compartirla con el resto. Quizá alguien no quiera usar flashtool.

Kiamu
12/05/13, 21:43:32
TERCER PASO: PREPARANDO LA BASE

En este paso vamos a:


Deodex: Es quitar los archivos ".odex" o recompilarlos dentro de sus respectivos ".apk" ¿Y esto para que sirve...? Pues reducimos el riesgo considerablemente de fastidiarla al hacer cambios.
Pre-rootear.
Zipalinear: Mejora gestión de RAM.
Soporte para init.d.
Carpeta para añadir apps propias.


Para todo esto voy a recurrir a "Android Kitchen" de dsixda. Como se que la mayoría os hareis un hilo si os pongo el enlace de descarga y el post donde el autor explica como instalarlo y como moverse. Traduzco de la lengua de Shakesperare a la de Cervantes un poco más abajo. Una vez que tengamos todo lo anterior y la ROM colocada en la carpeta:

http://img824.imageshack.us/img824/3253/11147712.png


1.) Abrimos Cygin Terminal y escribimos "cd kitchen" para que cargue esa carpeta, pulsamos ENTER. Seguidamente escribimos "./menu" y ENTER. Si todo ha salido bien debemos tener algo como esto:

http://img819.imageshack.us/img819/9738/imagen1je.png


2.) Empezamos con la opción (1) "Set up working folder from ROM". En la siguiente pantalla nos dice que nos aseguremos que que tenemos la ROM en la carpeta correcta, aceptamos. Nos indica los archivos compatibles y numera cada uno de ellos, escribimos el número que queremos. Ahora creará una carpeta de trabajo, a la que da un nombre automaticamente. Nos da la opción de cambiarlo o dejar ese.
En el siguiente punto aceptamos añadir un "boot.img" para que la kitchen trabaje correctamente. Si nos dice que hay un problema con "updater-script" y que necesita crear un "update-script" aceptamos crearlo.

http://img194.imageshack.us/img194/354/imagen2cc.png


http://img267.imageshack.us/img267/4655/51378889.png3.) Cuando acabe volveremos a la pantalla de menu. El primer paso es añadir permisos ROOT (2) (opción c). Seguidamente añadimos BusyBox (3). Si estamos editando otra ROM puede decirnos que estas aplicaciones ya existen, podemos dejar las que hay o añadir las que la kitchen proporciona.


4.) De vuelta en el Menu, vamos a Advances Options (0). Ahí Deodex (11) System/app y Framework (b), normalmente no deoxea a la primera todo. Simplemente es volver a pasarlo sobre lo que ha dejado, en mi caso System/app (a) ATENCIÓN: Al deoxear tenemos que cambiar nuestro nivel de API a nuestra versión de Android, por ejemplo para Jelly Bean el nivel de API es 15. Pulsamos "v" y ponemos el valor 16 en el menu de deoxeo.

5.) Añadimos soporte para init.d (14) y funcionalidad data/app (13)

6.) Ya casi está. Vamos a montar la ROM, damos a la opción 99. Y en la siguiente pantalla, opción 2 (comodísima xD y hace zipaling). Esperamos a que acabe. (Importante firmar la ROM en este paso, la opción 2 "Lazy Mode" la firma automaticamente)

7.) La ROM resultante se guarda en la carpeta de Cygwin un nivel por encima de donde hemos metido la ROM al principio en "OUTPUT".

8.) Normalmente el updater-script resultante del paso por esta kitchen no es el correcto. Se instalará mediante recovery, pero pueden perder funciones importantes debido a que no da los permisos correctos. Puedes probar a usar el génerico facilitado más arriba (Funciona en Xperia S para Jelly Bean) o hacer tu uno.


ANDROID KITCHEN: MANUAL DE INSTALACIÓN



El tema original es ESTE (http://forum.xda-developers.com/showthread.php?t=633246)



Las instrucciones de instalación en Windows son ESTAS (http://dl.xda-developers.com/attachdl/64ff4c5fe468999551d55fcec09bf000/518fab14/1/8/0/3/6/7/6/cygwin_install.txt)



Las instrucciones de uso están AQUÍ (http://forum.xda-developers.com/showpost.php?p=5626300&postcount=3) en apartado "Detailed instructions (for newbies)".



Cuando tenga tiempo y dependiendo de las dificultades que encontréis lo traduciré.

Kiamu
12/05/13, 21:44:02
CUARTO PASO: LIMPIANDO LA ROM

También es importante quitar parte de las aplicaciones o personalización que nuestro fabricante mete a su smartphone. Así ganaremos fluidez y ganaremos minutos o incluso horas de batería.
Dependiendo de nuestro modelo podremos quitar unas o otras. Algunas serán esenciales para el sistema, otras totalmente prescindibles. El método el simple.

Partiendo de la ROM que hemos obtenido al finalizar el tercer paso o cualquier otra con la queramos trabajar, sin descomprimirla y con 7zip la abrimos. Es recomendable tener una copia de la ROM por si borramos más de la cuenta y queremos recuperar.
Dentro de la carpeta "System" encontramos una serie de carpetas que detallamos a continuación.


Carpeta "app": Eliminamos las aplicaciones que deseemos, es necesario estudiar previamente para que sirve cada cosa. Simplemente es seleccionarlas y en la barra superior dar a borrar.



Carpeta "bin": En esta carpeta están los binarios de Android, son necesarios para el funcionamiento correcto del sistema. Todos los archivos presentes en esta carpeta deben ser enlazados en el updater-scrip, por lo que será importante a la hora de hacer ese archivo.



Carpeta "etc": Aquí, por ejemplo, podemos comprobar la carpeta etc/customization y la carpeta ect/product esten limpias de aplicaciones basura. Yo recomiendo eliminarlas directamente. También podemos eliminar la carpeta fast-dormancy si hemos eliminado las respectivas apk en system/app. Dentro de la carpeta permissions encontramos una serie de archivos que dicen a Android que permisos deben de tener las aplicaciones de system/app, si eliminamos la aplicación podemos eliminar también sus permisos. Por ejemplo si eliminamos la aplicaciónes de Facebook, pordemos elimnar todos los persmisos que lleven la palabra "facebook" entre todo su nombre.



Carpeta "fonts": Aquí podemos cambiar las fuentes, para que la ROM tenga otro tipo de fuente. Hay que cambiarlas también en el updater-script.



Carpeta "framework": Al igual que en la carpeta etc/permissions si eliminamos la aplicación podemos eliminar el archivo jar correspondiente.



Carpeta "lib": No la tocamos en este Tutorial.



Carpeta "media": Dentro de esta carpeta eliminamos "vídeo". También podemos cambiar la bootanimation, más adelante aprenderemos a hacer una y a cambiarla. Centrándonos en la carpeta audio; ahí podemos en alarms, notifications y ringtones eliminar y añadir lo que queremos.



Carpeta "semc": Ahí tenemos las imágenes de carga en apagado, podemos cambiarlas por otras que nos gusten más. Si lo eliminamos, al no poder cargar las imagenes encenderá el movil.



Carpeta "tts": Aquí se guardan los archivos de síntesis de voz de PicoTTS. Si eliminamos esta aplicación de system/app podemos quitarla entera. O simplemente podemos eliminar los archivos en idiomas como Frances o Italiano.



Carpeta "urs": nos centraremos en "xt9". Es donde están las predicciones de teclado . Si hacemos una ROM para territorio de habla Española. Con dejar Ingles, Español, Catalan y Vasco es suficiente.



Carpeta "vendor": Empezaremos por "pittpat" ahí están los modelos de desbloqueo facial, si no desbloqueamos el móvil de esta forma pueden eliminarse perfectamente junto a su respectiva app en system/app. En overlay/framework, tenemos los temas de Xperia, también se pueden eliminar algunos o todos.



Carpeta "xbin": Mas archivos binarios que no van en "bin", normalmente aquí van busybox y superuser.



Volvamos un momento a system/etc allí encontramos un archivo interesante llamado "apns-conf" este archivo es de configuración de APN. Si lo configuramos correctamente los usuarios que prueben nuestra ROM no tendrán que meterlo ellos manualmente. Sobre todo si son clientes de OMV. Dejo AQUÍ (https://mega.co.nz/#!roo3TCSI!erS2u3ahQrT5R47lacJy33tGxvd1zfz1zijBWGK dOIc) el archivo apns-conf de CyanogenMOD uno de los más completos que hay, podemos añadirlo si queremos.


Ahora tu ROM pesará unos cuantos megas menos, puede que bastantes. Además de que habrás mejorado el consumo.


QUINTO PASO: HABLEMOS DE TWEAKS

Todo el mundo que anda metido en el mundillo de Android y se dedica a probar ROMS está todo el día oyendo hablar de Tweaks en Build.prop. Un tweak es básicamente una pequeña linea de código que modifica parametros por defecto en el sistema. Hay mucha tela que cortar al respecto, mucha gente sostiene que no sirven para nada otros que sí. Está demostrado que los benchmark suben o bajan ligeramente según los tweaks que usemos.
Y ¿Como metemos tweaks?

1.) Esta vez con el zip abierto de la ROM vamos a "system" y ahí abrimos Build.prop con Notepad++

[IMAGEN 12]

2.) Lo que nos interesa, por ahora, está al final en "ADDITIONAL_BUILD_PROPERTIES". (Nota: Las # implica que el sistema no lee esa linea, sirven de guía para tí. Pero el sistema se las salta)
3.) Ahí empezamos a introducir los tweaks que queramos. Debemos investigar por nuestra cuenta cuales son mejores para nuestro terminal y versión de Android.
Un ejemplo de Build.prop:

#
# ADDITIONAL_BUILD_PROPERTIES
#
ro.product-res-path=framework/SemcGenericUxpRes.apk
ro.com.android.dataroaming=true
keyguard.no_require_sim=true
ro.com.android.dateformat=dd-MM-yyyy
ro.vendor.extension_library=/system/lib/libqc-opt.so
dalvik.vm.heapstartsize=8m
dalvik.vm.heapgrowthlimit=64m
dalvik.vm.heapsize=256m
ro.setupwizard.mode=DISABLED
ro.com.google.gmsversion=4.0_r7
ro.com.google.clientidbase=android-sonyericsson
ro.sf.lcd_density=320
ro.ril.hsxpa=2
ro.ril.gprsclass=12
ro.semc.xloud.supported=true
ro.usb.pid_suffix=169
dalvik.vm.dexopt-flags=m=y,v=n,o=v,u=n
net.bt.name=Android
dalvik.vm.stack-trace-file=/data/anr/traces.txt
ro.service.swiqi.supported=true
persist.service.swiqi.enable=1
drm.service.enable=false

# MEJORAS CONEXION
ro.ril.avoid.pdp.overlap=1

# CAMBIOS INTERFAZ
persist.adb.notify=0

# DESHABILITAR LOGCAT
logcat.live=disable

# DESHABILITAR CHEQUEO DE ERRORES
ro.kernel.android.checkjni=0
ro.kernel.checkjni=0

# MEJORA RESPUESTA SCROLLING
windowsmgr.max_events_per_sec=240

# VELOCIDAD SCROLLING
ro.max.fling_velocity=12000
ro.min.fling_velocity=8000

# MEJORA RESPUESTA TACTIL
debug.performance.tuning=1
video.accelerate.hw=1

# AHORRO ENERGIA
wifi.supplicant_scan_interval=180
pm.sleep_mode=1
ro.ril.disable.power.collapse=1
ro.mot.eri.losalert.delay=1000

# MEJORA SEÑAL
ro.ril.hep=1
ro.ril.enable.dtm=1
ro.ril.hsdpa.category=10
ro.ril.enable.a53=1
ro.ril.enable.3g.prefix=1
ro.ril.htcmaskw1.bitmask=4294967295
ro.ril.htcmaskw1=14449
ro.ril.hsupa.category=5

# MEJORA NAVEGADOR
net.tcp.buffersize.default=4096,87380,256960,4096, 16384,256960
net.tcp.buffersize.wifi=4096,87380,256960,4096,163 84,256960
net.tcp.buffersize.umts=4096,87380,256960,4096,163 84,256960
net.tcp.buffersize.gprs=4096,87380,256960,4096,163 84,256960
net.tcp.buffersize.edge=4096,87380,256960,4096,163 84,256960

# OTROS
persist.sys.purgeable_assets=1
debug.enabletr=true
dalvik.vm.verify-bytecode=false
persist.sys.ui.hw=1
View.scroll_friction=10
ro.HOME_APP_ADJ=1
ro.config.nochekin=1
dalvik.vm.jniopts=forcecopy
dalvik.vm.execution-mode=int:jit
dalvik.vm.checkjni=false
dalvik.gc.type=precise


# AUMENTO FLASH
ro.media.capture.flash=led
ro.media.capture.flashMinV=3300000
ro.media.capture.torchIntensity=140
ro.media.capture.flashIntensity=145


SEXTO PASO: LOS ULTIMOS AJUSTES



Si hemos cambiado los sonidos del móvil, podemos decirle con que sonidos que queremos que empiece modificando estas lineas:


ro.config.ringtone=
ro.config.notification_sound=
ro.config.alarm_alert=

ej:
ro.config.ringtone=xperia.ogg
ro.config.notification_sound=notification.ogg
ro.config.alarm_alert=alarm.ogg

También podemos darle nombre a nuestra ROM modificando estos valores:


ro.semc.version.fs_revision=
ro.build.id=
ro.build.display.id=

ej:
ro.semc.version.fs_revision=6.1.A.2.55
ro.build.id=Xperia Series - Base+ (v0.3)
ro.build.display.id=Xperia Series - Base+ (v0.3)

Kiamu
12/05/13, 21:44:34
Séptimo paso: Creando un updater-scrip
A la hora de crear una ROM para instalar desde cualquier Recovery (CWM, TWRP,...) es necesario decirle a este como instalarla. Es decir, debemos darle una serie de comandos que debe ejecutar durante la instalación para que la ROM instale correctamente.
Para ello nos centraremos en la carpeta META-INF/com/google/android dentro de esta encontramos el archivo "updater-script" (recuerda que ya he dejado la carpeta y un archivo para descargar a modo de ejemplo, si te falta puedes usar esa)

El updater-script es este, si te entra principios de síncope al mirarlo... respira X-D:
Primera explicación a colorines.
show_progress(0.1, 0);
format("ext4", "EMMC", "/dev/block/mmcblk0p12", "0", "/system"); --> Formatea system
mount("ext4", "EMMC", "/dev/block/mmcblk0p12", "/system"); --> Monta system
package_extract_dir("system", "/system"); --> Extrae todo el contenido de system al móvil (todo lógico hasta ahora)
symlink("Roboto-Bold.ttf", "/system/fonts/DroidSans-Bold.ttf"); --> De aquí para abajo son los llamados symlink o enlaces simbolicos, son necesarios para que todo funcione bien. Suelen ser siempre los mismos.
symlink("Roboto-Regular.ttf", "/system/fonts/DroidSans.ttf");
symlink("toolbox", "/system/bin/printenv");
symlink("toolbox", "/system/bin/sync");
symlink("toolbox", "/system/bin/route");
symlink("toolbox", "/system/bin/df");
symlink("toolbox", "/system/bin/kill");
symlink("toolbox", "/system/bin/cmp");
symlink("toolbox", "/system/bin/vmstat");
symlink("mksh", "/system/bin/sh");
symlink("toolbox", "/system/bin/wipe");
symlink("toolbox", "/system/bin/schedtop");
symlink("toolbox", "/system/bin/getevent");
symlink("toolbox", "/system/bin/mv");
symlink("toolbox", "/system/bin/sendevent");
symlink("toolbox", "/system/bin/setconsole");
symlink("toolbox", "/system/bin/renice");
symlink("toolbox", "/system/bin/iftop");
symlink("toolbox", "/system/bin/watchprops");
symlink("toolbox", "/system/bin/lsof");
symlink("toolbox", "/system/bin/ln");
symlink("toolbox", "/system/bin/chown");
symlink("toolbox", "/system/bin/setprop");
symlink("toolbox", "/system/bin/ioctl");
symlink("toolbox", "/system/bin/dd");
symlink("toolbox", "/system/bin/rmmod");
symlink("toolbox", "/system/bin/reboot");
symlink("toolbox", "/system/bin/notify");
symlink("toolbox", "/system/bin/nandread");
symlink("toolbox", "/system/bin/log");
symlink("toolbox", "/system/bin/mount");
symlink("toolbox", "/system/bin/ctrlaltdel");
symlink("toolbox", "/system/bin/touch");
symlink("toolbox", "/system/bin/hd");
symlink("toolbox", "/system/bin/lsusb");
symlink("toolbox", "/system/bin/getprop");
symlink("toolbox", "/system/bin/start");
symlink("toolbox", "/system/bin/ps");
symlink("toolbox", "/system/bin/chmod");
symlink("toolbox", "/system/bin/dmesg");
symlink("toolbox", "/system/bin/ifconfig");
symlink("toolbox", "/system/bin/netstat");
symlink("toolbox", "/system/bin/rm");
symlink("toolbox", "/system/bin/md5");
symlink("toolbox", "/system/bin/cat");
symlink("toolbox", "/system/bin/insmod");
symlink("toolbox", "/system/bin/stop");
symlink("toolbox", "/system/bin/rmdir");
symlink("toolbox", "/system/bin/sleep");
symlink("toolbox", "/system/bin/ls");
symlink("toolbox", "/system/bin/uptime");
symlink("toolbox", "/system/bin/id");
symlink("toolbox", "/system/bin/date");
symlink("toolbox", "/system/bin/ionice");
symlink("toolbox", "/system/bin/newfs_msdos");
symlink("toolbox", "/system/bin/smd");
symlink("toolbox", "/system/bin/mkdir");
symlink("toolbox", "/system/bin/top");
symlink("toolbox", "/system/bin/lsmod");
symlink("toolbox", "/system/bin/umount");
set_perm_recursive(0, 0, 0755, 0644, "/system"); --> Ahora empezamos a asignar permisos
set_perm_recursive(0, 2000, 0755, 0755, "/system/bin");
set_perm(0, 3003, 06755, "/system/bin/ip");
set_perm(0, 3003, 02750, "/system/bin/netcfg");
set_perm(0, 3004, 02755, "/system/bin/ping");
set_perm(0, 2000, 06750, "/system/bin/run-as");
set_perm_recursive(1002, 1002, 0755, 0440, "/system/etc/bluetooth");
set_perm(0, 0, 0755, "/system/etc/bluetooth");
set_perm(1000, 1000, 0640, "/system/etc/bluetooth/auto_pairing.conf");
set_perm(3002, 3002, 0444, "/system/etc/bluetooth/blacklist.conf");
set_perm(1002, 1002, 0440, "/system/etc/dbus.conf");
set_perm(1014, 2000, 0550, "/system/etc/dhcpcd/dhcpcd-run-hooks");
set_perm(0, 2000, 0550, "/system/etc/init.goldfish.sh");
set_perm_recursive(0, 0, 0755, 0555, "/system/etc/ppp");
set_perm_recursive(0, 2000, 0755, 0644, "/system/vendor");
set_perm_recursive(0, 2000, 0755, 0644, "/system/vendor/etc");
set_perm_recursive(0, 0, 0755, 0644, "/system/vendor/firmware");
set_perm(0, 2000, 0755, "/system/vendor/firmware");
set_perm(0, 2000, 0755, "/system/vendor/lib");
set_perm_recursive(0, 2000, 0755, 0755, "/system/xbin");
set_perm(0, 1000, 0755, "/system/xbin/busybox");
symlink("/system/xbin/busybox", "/system/bin/busybox");
run_program("/system/xbin/busybox", "--install", "-s", "/system/xbin"); --> Instala busybox
set_perm(0, 0, 06755, "/system/xbin/su");
symlink("/system/xbin/su", "/system/bin/su");
show_progress(0.1, 10);
show_progress(0.2, 0);
show_progress(0.2, 10);
unmount("/system"); --> Desmonta system (lo montó en la seguna linea)
package_extract_file("boot.img", "/dev/block/mmcblk0p3"); - --> En caso de que la ROM venga con un kernel lo instala
format("ext4", "EMMC", "/dev/block/mmcblk0p14", "0", "/data"); -->
format("ext4", "EMMC", "/dev/block/mmcblk0p13", "0", "/cache");-- > En estos casos, hace un formateo de data y de cache. Es mejor dejarlo a elección del usuario, solo lo ponemos cuando sea obligatorio hacer los formateos.
Teniendo en cuenta lo siguiente:


Barra de progreso. La barra de carga, normalmente azul, que va mostrando el progreso de instalación de la ROM.

show_progress(progreso, frecuencia)
Recomendado dejarlo en
show_progress(0.1, 0) 10% y sin aumento

Mostrar comentarios.

ui_print("COMENTARIO")
ui_print("Formateando particiones")

Formateo automático.

format("ext4", "EMMC", "/dev/block/mmcblk0p12", "0", "/system") --> Obligatorio, ¡también debe montarse!

format("ext4", "EMMC", "/dev/block/mmcblk0p14", "0", "/data") --> Opcional

format("ext4", "EMMC", "/dev/block/mmcblk0p13", "0", "/cache") --> Opcional

Symlinks genericos(esto no lo tengo muy claro, es lo que he deducido)

symlink("origen", "destino")

symlink("Roboto-Bold.ttf", "/system/fonts/DroidSans-Bold.ttf");
symlink("Roboto-Regular.ttf", "/system/fonts/DroidSans.ttf");
symlink("busybox", "/system/xbin/[");
symlink("busybox", "/system/xbin/[[");
symlink("busybox", "/system/xbin/adjtimex");
symlink("busybox", "/system/xbin/arp");
symlink("busybox", "/system/xbin/ash");
symlink("busybox", "/system/xbin/awk");
symlink("busybox", "/system/xbin/base64");
symlink("busybox", "/system/xbin/basename");
symlink("busybox", "/system/xbin/bbconfig");
symlink("busybox", "/system/xbin/blkid");
symlink("busybox", "/system/xbin/blockdev");
symlink("busybox", "/system/xbin/brctl");
symlink("busybox", "/system/xbin/bunzip2");
symlink("busybox", "/system/xbin/bzcat");
symlink("busybox", "/system/xbin/bzip2");
symlink("busybox", "/system/xbin/cal");
symlink("busybox", "/system/xbin/cat");
symlink("busybox", "/system/xbin/catv");
symlink("busybox", "/system/xbin/chattr");
symlink("busybox", "/system/xbin/chgrp");
symlink("busybox", "/system/xbin/chmod");
symlink("busybox", "/system/xbin/chown");
symlink("busybox", "/system/xbin/chroot");
symlink("busybox", "/system/xbin/clear");
symlink("busybox", "/system/xbin/cmp");
symlink("busybox", "/system/xbin/comm");
symlink("busybox", "/system/xbin/cp");
symlink("busybox", "/system/xbin/cpio");
symlink("busybox", "/system/xbin/crond");
symlink("busybox", "/system/xbin/crontab");
symlink("busybox", "/system/xbin/cut");
symlink("busybox", "/system/xbin/date");
symlink("busybox", "/system/xbin/dc");
symlink("busybox", "/system/xbin/dd");
symlink("busybox", "/system/xbin/depmod");
symlink("busybox", "/system/xbin/devmem");
symlink("busybox", "/system/xbin/df");
symlink("busybox", "/system/xbin/diff");
symlink("busybox", "/system/xbin/dirname");
symlink("busybox", "/system/xbin/dmesg");
symlink("busybox", "/system/xbin/dnsd");
symlink("busybox", "/system/xbin/dos2unix");
symlink("busybox", "/system/xbin/du");
symlink("busybox", "/system/xbin/echo");
symlink("busybox", "/system/xbin/ed");
symlink("busybox", "/system/xbin/egrep");
symlink("busybox", "/system/xbin/env");
symlink("busybox", "/system/xbin/expand");
symlink("busybox", "/system/xbin/expr");
symlink("busybox", "/system/xbin/false");
symlink("busybox", "/system/xbin/fdisk");
symlink("busybox", "/system/xbin/fgrep");
symlink("busybox", "/system/xbin/find");
symlink("busybox", "/system/xbin/flash_lock");
symlink("busybox", "/system/xbin/flash_unlock");
symlink("busybox", "/system/xbin/flashcp");
symlink("busybox", "/system/xbin/flock");
symlink("busybox", "/system/xbin/fold");
symlink("busybox", "/system/xbin/free");
symlink("busybox", "/system/xbin/freeramdisk");
symlink("busybox", "/system/xbin/fsync");
symlink("busybox", "/system/xbin/ftpget");
symlink("busybox", "/system/xbin/ftpput");
symlink("busybox", "/system/xbin/fuser");
symlink("busybox", "/system/xbin/getopt");
symlink("busybox", "/system/xbin/grep");
symlink("busybox", "/system/xbin/groups");
symlink("busybox", "/system/xbin/gunzip");
symlink("busybox", "/system/xbin/gzip");
symlink("busybox", "/system/xbin/halt");
symlink("busybox", "/system/xbin/head");
symlink("busybox", "/system/xbin/hexdump");
symlink("busybox", "/system/xbin/id");
symlink("busybox", "/system/xbin/ifconfig");
symlink("busybox", "/system/xbin/inetd");
symlink("busybox", "/system/xbin/insmod");
symlink("busybox", "/system/xbin/install");
symlink("busybox", "/system/xbin/iostat");
symlink("busybox", "/system/xbin/ip");
symlink("busybox", "/system/xbin/kill");
symlink("busybox", "/system/xbin/killall");
symlink("busybox", "/system/xbin/killall5");
symlink("busybox", "/system/xbin/length");
symlink("busybox", "/system/xbin/less");
symlink("busybox", "/system/xbin/ln");
symlink("busybox", "/system/xbin/losetup");
symlink("busybox", "/system/xbin/ls");
symlink("busybox", "/system/xbin/lsattr");
symlink("busybox", "/system/xbin/lsmod");
symlink("busybox", "/system/xbin/lsusb");
symlink("busybox", "/system/xbin/lzcat");
symlink("busybox", "/system/xbin/lzma");
symlink("busybox", "/system/xbin/lzop");
symlink("busybox", "/system/xbin/lzopcat");
symlink("busybox", "/system/xbin/man");
symlink("busybox", "/system/xbin/md5sum");
symlink("busybox", "/system/xbin/mesg");
symlink("busybox", "/system/xbin/mkdir");
symlink("busybox", "/system/xbin/mke2fs");
symlink("busybox", "/system/xbin/mkfifo");
symlink("busybox", "/system/xbin/mkfs.ext2");
symlink("busybox", "/system/xbin/mkfs.vfat");
symlink("busybox", "/system/xbin/mknod");
symlink("busybox", "/system/xbin/mkswap");
symlink("busybox", "/system/xbin/mktemp");
symlink("busybox", "/system/xbin/modinfo");
symlink("busybox", "/system/xbin/modprobe");
symlink("busybox", "/system/xbin/more");
symlink("busybox", "/system/xbin/mount");
symlink("busybox", "/system/xbin/mountpoint");
symlink("busybox", "/system/xbin/mpstat");
symlink("busybox", "/system/xbin/mv");
symlink("busybox", "/system/xbin/nanddump");
symlink("busybox", "/system/xbin/nandwrite");
symlink("busybox", "/system/xbin/netstat");
symlink("busybox", "/system/xbin/nice");
symlink("busybox", "/system/xbin/nohup");
symlink("busybox", "/system/xbin/nslookup");
symlink("busybox", "/system/xbin/ntpd");
symlink("busybox", "/system/xbin/od");
symlink("busybox", "/system/xbin/patch");
symlink("busybox", "/system/xbin/pgrep");
symlink("busybox", "/system/xbin/pidof");
symlink("busybox", "/system/xbin/ping");
symlink("busybox", "/system/xbin/pkill");
symlink("busybox", "/system/xbin/pmap");
symlink("busybox", "/system/xbin/poweroff");
symlink("busybox", "/system/xbin/printenv");
symlink("busybox", "/system/xbin/printf");
symlink("busybox", "/system/xbin/ps");
symlink("busybox", "/system/xbin/pstree");
symlink("busybox", "/system/xbin/pwd");
symlink("busybox", "/system/xbin/pwdx");
symlink("busybox", "/system/xbin/rdev");
symlink("busybox", "/system/xbin/readlink");
symlink("busybox", "/system/xbin/realpath");
symlink("busybox", "/system/xbin/renice");
symlink("busybox", "/system/xbin/reset");
symlink("busybox", "/system/xbin/resize");
symlink("busybox", "/system/xbin/rev");
symlink("busybox", "/system/xbin/rm");
symlink("busybox", "/system/xbin/rmdir");
symlink("busybox", "/system/xbin/rmmod");
symlink("busybox", "/system/xbin/route");
symlink("busybox", "/system/xbin/run-parts");
symlink("busybox", "/system/xbin/rx");
symlink("busybox", "/system/xbin/sed");
symlink("busybox", "/system/xbin/seq");
symlink("busybox", "/system/xbin/setconsole");
symlink("busybox", "/system/xbin/setserial");
symlink("busybox", "/system/xbin/setsid");
symlink("busybox", "/system/xbin/sh");
symlink("busybox", "/system/xbin/sha1sum");
symlink("busybox", "/system/xbin/sha256sum");
symlink("busybox", "/system/xbin/sha512sum");
symlink("busybox", "/system/xbin/sleep");
symlink("busybox", "/system/xbin/sort");
symlink("busybox", "/system/xbin/split");
symlink("busybox", "/system/xbin/stat");
symlink("busybox", "/system/xbin/strings");
symlink("busybox", "/system/xbin/stty");
symlink("busybox", "/system/xbin/sum");
symlink("busybox", "/system/xbin/swapoff");
symlink("busybox", "/system/xbin/swapon");
symlink("busybox", "/system/xbin/sync");
symlink("busybox", "/system/xbin/sysctl");
symlink("busybox", "/system/xbin/tac");
symlink("busybox", "/system/xbin/tail");
symlink("busybox", "/system/xbin/tar");
symlink("busybox", "/system/xbin/taskset");
symlink("busybox", "/system/xbin/tee");
symlink("busybox", "/system/xbin/telnet");
symlink("busybox", "/system/xbin/telnetd");
symlink("busybox", "/system/xbin/test");
symlink("busybox", "/system/xbin/tftp");
symlink("busybox", "/system/xbin/tftpd");
symlink("busybox", "/system/xbin/time");
symlink("busybox", "/system/xbin/timeout");
symlink("busybox", "/system/xbin/top");
symlink("busybox", "/system/xbin/touch");
symlink("busybox", "/system/xbin/tr");
symlink("busybox", "/system/xbin/traceroute");
symlink("busybox", "/system/xbin/true");
symlink("busybox", "/system/xbin/ttysize");
symlink("busybox", "/system/xbin/tune2fs");
symlink("busybox", "/system/xbin/umount");
symlink("busybox", "/system/xbin/uname");
symlink("busybox", "/system/xbin/uncompress");
symlink("busybox", "/system/xbin/unexpand");
symlink("busybox", "/system/xbin/uniq");
symlink("busybox", "/system/xbin/unix2dos");
symlink("busybox", "/system/xbin/unlzma");
symlink("busybox", "/system/xbin/unlzop");
symlink("busybox", "/system/xbin/unxz");
symlink("busybox", "/system/xbin/unzip");
symlink("busybox", "/system/xbin/uptime");
symlink("busybox", "/system/xbin/usleep");
symlink("busybox", "/system/xbin/uudecode");
symlink("busybox", "/system/xbin/uuencode");
symlink("busybox", "/system/xbin/vi");
symlink("busybox", "/system/xbin/watch");
symlink("busybox", "/system/xbin/wc");
symlink("busybox", "/system/xbin/wget");
symlink("busybox", "/system/xbin/which");
symlink("busybox", "/system/xbin/whoami");
symlink("busybox", "/system/xbin/xargs");
symlink("busybox", "/system/xbin/xz");
symlink("busybox", "/system/xbin/xzcat");
symlink("busybox", "/system/xbin/yes");
symlink("busybox", "/system/xbin/zcat");
symlink("mksh", "/system/bin/sh");
symlink("toolbox", "/system/bin/cat");
symlink("toolbox", "/system/bin/chmod");
symlink("toolbox", "/system/bin/chown");
symlink("toolbox", "/system/bin/cmp");
symlink("toolbox", "/system/bin/date");
symlink("toolbox", "/system/bin/dd");
symlink("toolbox", "/system/bin/df");
symlink("toolbox", "/system/bin/dmesg");
symlink("toolbox", "/system/bin/getevent");
symlink("toolbox", "/system/bin/getprop");
symlink("toolbox", "/system/bin/hd");
symlink("toolbox", "/system/bin/id");
symlink("toolbox", "/system/bin/ifconfig");
symlink("toolbox", "/system/bin/iftop");
symlink("toolbox", "/system/bin/insmod");
symlink("toolbox", "/system/bin/ioctl");
symlink("toolbox", "/system/bin/ionice");
symlink("toolbox", "/system/bin/kill");
symlink("toolbox", "/system/bin/ln");
symlink("toolbox", "/system/bin/log");
symlink("toolbox", "/system/bin/ls");
symlink("toolbox", "/system/bin/lsmod");
symlink("toolbox", "/system/bin/lsof");
symlink("toolbox", "/system/bin/md5");
symlink("toolbox", "/system/bin/mkdir");
symlink("toolbox", "/system/bin/mount");
symlink("toolbox", "/system/bin/mv");
symlink("toolbox", "/system/bin/nandread");
symlink("toolbox", "/system/bin/netstat");
symlink("toolbox", "/system/bin/newfs_msdos");
symlink("toolbox", "/system/bin/notify");
symlink("toolbox", "/system/bin/printenv");
symlink("toolbox", "/system/bin/ps");
symlink("toolbox", "/system/bin/r");
symlink("toolbox", "/system/bin/reboot");
symlink("toolbox", "/system/bin/renice");
symlink("toolbox", "/system/bin/rm");
symlink("toolbox", "/system/bin/rmdir");
symlink("toolbox", "/system/bin/rmmod");
symlink("toolbox", "/system/bin/route");
symlink("toolbox", "/system/bin/schedtop");
symlink("toolbox", "/system/bin/sendevent");
symlink("toolbox", "/system/bin/setconsole");
symlink("toolbox", "/system/bin/setprop");
symlink("toolbox", "/system/bin/sleep");
symlink("toolbox", "/system/bin/smd");
symlink("toolbox", "/system/bin/start");
symlink("toolbox", "/system/bin/stop");
symlink("toolbox", "/system/bin/sync");
symlink("toolbox", "/system/bin/top");
symlink("toolbox", "/system/bin/touch");
symlink("toolbox", "/system/bin/umount");
symlink("toolbox", "/system/bin/uptime");
symlink("toolbox", "/system/bin/vmstat");
symlink("toolbox", "/system/bin/watchprops");
symlink("toolbox", "/system/bin/wipe");

Permisos

set_perm(uid, gid, permisos, "ruta")
set_perm_recursive(uid, gid, permisos_carpeta, permisos_archivo, "ruta")

set_perm_recursive(0, 0, 0755, 0644, "/system");
set_perm_recursive(0, 2000, 0755, 0755, "/system/bin");
set_perm(0, 3003, 06755, "/system/bin/ip");
set_perm(0, 3003, 02750, "/system/bin/netcfg");
set_perm(0, 3004, 02755, "/system/bin/ping");
set_perm(0, 2000, 06750, "/system/bin/run-as");
set_perm_recursive(1002, 1002, 0755, 0440, "/system/etc/bluetooth");
set_perm(0, 0, 0755, "/system/etc/bluetooth");
set_perm(1000, 1000, 0640, "/system/etc/bluetooth/auto_pairing.conf");
set_perm(3002, 3002, 0444, "/system/etc/bluetooth/blacklist.conf");
set_perm(1002, 1002, 0440, "/system/etc/dbus.conf");
set_perm(1014, 2000, 0550, "/system/etc/dhcpcd/dhcpcd-run-hooks");
set_perm_recursive(0, 2000, 0755, 0750, "/system/etc/init.d");
set_perm(0, 0, 0777, "/system/etc/init.d");
set_perm(0, 2000, 0550, "/system/etc/init.goldfish.sh");
set_perm_recursive(0, 0, 0755, 0555, "/system/etc/ppp");
set_perm_recursive(0, 2000, 0755, 0644, "/system/vendor");
set_perm_recursive(0, 2000, 0755, 0644, "/system/vendor/etc");
set_perm_recursive(0, 0, 0755, 0644, "/system/vendor/firmware");
set_perm(0, 2000, 0755, "/system/vendor/firmware");
set_perm(0, 2000, 0755, "/system/vendor/lib");
set_perm(0, 2000, 0755, "/system/vendor/lib/hw");
set_perm_recursive(0, 2000, 0755, 0755, "/system/xbin");
set_perm(0, 1000, 0755, "/system/xbin/busybox");
symlink("/system/xbin/busybox", "/system/bin/busybox");
run_program("/system/xbin/busybox", "--install", "-s", "/system/xbin");
set_perm(0, 0, 0777, "/system/bin/.ext");
set_perm(0, 0, 06755, "/system/bin/.ext/.su");
set_perm(0, 0, 06755, "/system/xbin/su");Más comandos para los Updater-script en este enlace:


http://www.htcmania.com/showthread.php?t=169334

Kiamu
12/05/13, 21:45:05
NOVENO PASO: DECOMPILAR Y COMPILAR APK

Hay varios programas o kitchens para compilar y decompilar aplicaciones. Una apk es un archivo comprimido, a menos que queramos cambiar las imágenes no nos sirve con abirlo con un descompresor de archivos. Decompilar sirve para personalizar mucho Android o la propia aplicación, así como traducirla.

Para decompilar apk usaremos "Virtuous Ten Studio" un programa gratuito con algunas opciones especiales de pago.

Podemos descargarlo de ESTA (http://www.virtuous-ten-studio.com/) página. Una vez descargado lo instalamos, es posible que nos pida instalar "Microsoft .NET Framework 4.5" para poder continuar.
Esta es la interfaz que nos encontramos:
http://imageshack.us/a/img543/6338/wuwn.png


A la hora de decompilar es fundamental decirle al programa bajo que framework tiene que trabajar. Sony incluye dos framework diferentes en sus Xperia "framework-res.apk" y "SemcGenericUxpRes.apk" presentes ambas en system/framework.

1. Dar a VTS los dos framework con los que trabajar.
Vamos a "File"/Open Settings/External tools/Apktool, damos a Add multiple framework (same tag) y damos un nombre al conjunto de framewoks que vamos a dar.

En la siguiente pantalla vamos a "use local files", navegamos hasta la carpeta donde están los framework. Nos mostrará la carpeta vacía. Aceptamos en ese carpeta.
Debería aparecernos así, dos framework con el nombre que nosotros pusimos.
http://img833.imageshack.us/img833/3370/7e3.png


Ahora ya podemos empezar a decompilar apk

2. Decompilando una apk.
Ahora vamos a File/New Proyect y:


En la pestaña Apktool, modificamos framework tag y escojemos el framework bajo el que está la apk que vamos a editar. Es decir, no useis un framework de CyanogenMOD para editar una apk de Sony, hay que usar el mismo framework y la misma versión de la apk.
Smali: Elegimos el API lever correcto, editamos una apk de Jelly Bean. API Level: 4.1 Jelly Bean
Import: Escogemos la apk que queremos decompilar y editar.
Por ultimo volvemos a project y damos un "SolutionName"

Se pondrá a decompilar, puede que tarde un rato. Depende del tamaño de la apk y la potencia de nuestro PC.
http://imageshack.us/a/img521/280/5i2.png


3.¿Que podemos hacer?


El compañero kassyan_123 nos explica como quitar el % de batería AQUI, el da el ejemplo basandose en APKTOOL. Nosotros ya tenemos la apk decompilada, solo tenemos que ir a ahí y cambiar la linea.

IM6


¡A buscar como hacer cosas! :p



4.Compilar
Cuando acabemos de editar nuestro archivo simplemente hacemos click encima de el y damos a "Build project", nos entregará nuestra app compilada y firmada.
http://imageshack.us/a/img195/1268/7zz.png


Normalmente la guarda en Mis Documentos/Virtuous Ten Studio/Projects/nombrequelehasdado/nombredelaapp/binary
Ahora solo tenemos que soltarla dentro de nuestro zip de la ROM.

Nota: VTS también nos permite editar archivos ".jar".


OCTAVO PASO: INTRODUCE MOD's DE TERCEROS EN TU ROM

Como veis realmente la parte más complicada de la cocina en Android es crear tus propios MODs, se requieren conocimientos de programación o tiempo buscando tutoriales. En todos los modelos de Android siempre encontraremos Mods hechos por teceros que podremos incluir en nuestra ROM.

No tiene mucha ciencia la cosa. Muchas veces basta con bajarte el MOD, descomprimirlo y soltar los archivos que tenga dentro en las misma carpetas; sustituyendo a los que hay por defecto.

Otras veces, estos MOD son más complejos y traen archivos nuevos o los archivos que sustituyen requieren otro tipo de permisos. En este caso hemos de darles estos permisos a la vez que instalamos la ROM, es decir, debemos editar el updater-script.
Lo primero debemos consultar el updater-script que trae nuestro MOD y hacer una lectura comprensiva de el. Tenemos que ver que permisos da, si elimina alguna aplicación, etc.
Una vez mirado los añadimos al updater-script de nuestra ROM.
Por ejemplo:

PRIMER UPDATER-SCRIPT DE UN MOD X

ui_print(" ");
ui_print(">>> Mount system...");
run_program("/sbin/mount", "/system");
run_program("/sbin/busybox","mount","/data");
ui_print(" ");
delete_recursive("/system/app/SystemUI.odex");
delete_recursive("/system/framework/android.policy.odex");
ui_print(">>> Extracting files...");
package_extract_dir("system", "/system");
package_extract_dir("data/", "/data/local");
ui_print(" ");
ui_print(">>> Unmount system...");
run_program("/sbin/umount", "/system");
run_program("/sbin/umount", "/data");
ui_print("Press thanks if it works :D ");
ui_print(">>> Reboot system...");
run_program("/sbin/sleep", "5");
run_program("/sbin/reboot");
¿Hay que añadir algo o solo con copiar los archivos que trae en sus respectivas carpetas nos sirve?
Depende. Fijate en los delete_recursive, ahí nos está elimando dos archivos. Pero SOLO elimina archivos odex, es decir si nuestra ROM es deodex no tenemos que eliminarlos. Si nuestra ROM es odex podemos eliminarlos a pelo en system/app o incluir estas dos lineas en nuestro updater-script. ¿Facil no?


SEGUNDO UPDATER-SCRIPT DE UN MOD Y

ui_print("Activating SONY Camera Driver");
set_perm_recursive(0, 2000, 0755, 0755, "/system/bin/mm-gs-camctrl-test");
set_perm_recursive(0, 2000, 0755, 0755, "/system/bin/MPQDvbCTestApp");
set_perm_recursive(0, 2000, 0755, 0755, "/system/bin/MPQStrMgrTest");
set_perm_recursive(0, 2000, 0755, 0755, "/system/bin/MPQUnitTest");
set_perm_recursive(0, 2000, 0755, 0755, "/system/bin/MPQVideoRendererTestApp");
ui_print("");
ui_print("Done...");
unmount("/system");
En este caso después de copiar los archivos en las carpetas correspondientes debemos añadir los permisos en azul a nuestro updater-script

Kiamu
12/05/13, 21:45:46
Añadidos futuros:
+ Crea tus tweaks init.d
+ Bootanimation personalizada
+ ftf de Kernel y Baseband
+ Obtener archivos a partir de un ftf

Agradecimientos:
Creo que debo agradecer este tutorial a:


a dsixda por su Android Kitchen.
al equipo de Virtuous Ten Studio, por darnos una herramientan tan util para editar archivos de Android bajo Windows.
rockernaxo de DevSXSTeam por su ayuda.
También a bastante gente que con sus guías y tutoriales han ayudado a mi y a otros muchos a manejarnos en Android. Merecen mención especial Yakandu y ElHechicero.

Otra gente que ha contribuido a este tutorial:
Marc0sgb

Yakandu
12/05/13, 22:25:12
Pinta bien, estaré al tanto de ciertos pasos para mi ministock :D

perezagua8
12/05/13, 22:32:26
Muchas gracias kiamu, enserio!

rockernaxo
13/05/13, 00:45:25
Excelente trabajo Kiamu!!!!! Tiene una pinta estupenda y con explicaciones muy accesibles.

Mañana me paso para darte las gracias en todos lo post.

mclarens
13/05/13, 01:30:11
Genial, gran trabajo!

decibeles76
13/05/13, 02:09:08
¡Genial! Como que lo empujas a uno al mundillo este de la cocina, espero animarme y hacer algunas pruebas con mi Xperia S ahora que Jelly Bean está a la vuelta de la esquina/ojala :rolleyes: Aunque admito que me da algo de miedillo el dejar el teléfono como una bonita maqueta.

metroid_x
13/05/13, 03:51:51
Kiamu eres grande :campeon::campeon::campeon:

luego lo leo con mas calma y me pongo a tratar de hacer algo :risitas::risitas:


Tema oficial y con chincheta :silbando:

Teddinho
13/05/13, 05:44:21
Esto es justamente lo que estaba esperando, estuve leyendo para meterme en el mundo de la cocina y con este curro pues nada que decir, a ponerle ganas y meterle mano a mi XS :-)

Blackuis
13/05/13, 06:07:34
WOW !!!
Perfecto !!!
La habia estado buscando por mucho tiempo...

Estare moscas de nuevas actualiazciones...
:tambuff:
:taz::taz::taz::taz:
:ola:

joancargo
13/05/13, 09:34:42
Kiamu , fantástico el trabajo
Un 10 ya y chincheta !!
Gracias

SebbasVelasquez
13/05/13, 15:48:54
Muchísimas gracias :D
Hace mucho que estaba esperando y buscando un tutorial, para cocinarme alguna que otra rom :risitas:
Gracias de nuevo :besito:

tonchimax
13/05/13, 18:36:51
buen trabajo compañero :aplausos::ola:

thezeus
13/05/13, 21:37:22
Eres un grande compañero :ok:

milocj
14/05/13, 12:59:33
Estupendo post, a la altura de su creador, un saludo!!

Jonylito
16/05/13, 00:15:07
Que grande eres macho... Tu siempre tan currante!! Enhorabuena por los tutoriales, son completos y sencillos. Cualquier cosa ya sabes ;)

Saludos!!

donnadieosi
18/05/13, 18:59:36
Muy bueno

metroid_x
18/05/13, 20:07:15
Le damos un up al tema

+1 para ponerlo en los temas importantes

catitonimarga
19/05/13, 18:07:03
De los mejores tutoriales que he visto para la cocina!!!

Mi mas sincera enhorabuena y te seguire por aqui

winsmel
19/05/13, 21:28:23
Muy bueno Kiamu. :thumbup:

warzo
20/05/13, 04:15:45
Vaya curro! :aplausos:
Muchas gracias.

donnadieosi
28/05/13, 14:59:01
Lo subimos un poquito, para que no se pierda (molaría que se pudiera terminar)
Y también soy partidario de ponerlo en importante

Chuni1981
28/05/13, 15:32:42
lo subimos un poquito, para que no se pierda (molaría que se pudiera terminar)
y también soy partidario de ponerlo en importante



+10000000000000000

Johnnymlights
29/05/13, 00:20:06
Ahora tenemos una ROM instalable desde Recovery, podemos compartirla con el resto. Quizá alguien no quiera usar flashtool.

Grande Kiamu lo pones claro y sencillo! Eres un Crack! :ok:

AndrespVzla
29/05/13, 01:06:45
Que buena guía, solo falta que la completen y estará perfecta. Se agradece!

Costa1212
29/05/13, 09:50:03
Gracias por compartir conocimientos, en cuanto saque tiempo, seguiré este tuto.
Claro y conciso para los no iniciados como yo. Saludos.

killers10
29/05/13, 10:16:43
Que grande , muchisimas gracias por tu aporte !! Esto es muy muy util para gente como yo que estamos empezando !!
Segun acabe con los examenes , empezare a moldear mi propia room , gracias por el aporte !! y mucha suerte con los examenes !!:ok:

Undurip
29/05/13, 12:29:54
Kiamu, eres uno de los tíos más grandes de este foro y lo demuestras continuamente. En 6 días acabo exámenes e iré a por tus tutoriales!

Johnnymlights
29/05/13, 13:31:17
Nos dirá que ha creado un nuevo archivo llamado "update_signed" y quedará "como que no ha funcionado" simplemente es tener paciencia y esperar un par de minutos. Más o menos cuando el archivo final ocupe 2-3 Mb más que el original habrá acabado. Podemos renombrar la ROM como queramos.

Al firmar no me aparece el archivo signed, espero, espero y nada, alguien sabe algo?

Kiamu
29/05/13, 18:34:48
Bueno, muchas gracias a todos. Pronto seguiré trabajando es este proyecto.

Al firmar no me aparece el archivo signed, espero, espero y nada, alguien sabe algo?
Uhm, debería hacerlo. A mi me lo hace sin problemas, a saber que pasa... Hay más programas que firman, puedes probar con Android Kitchen (http://forum.xda-developers.com/showthread.php?t=633246) que también tiene una opción de firmar ROM.

EStapi
29/05/13, 20:21:36
Estupendo hilo Kiamu, enhorabuena :aplausos:. Así más de uno nos animaremos a entrar en este mundillo del desarrollo. Por cierto he descargado EMMA y me he registrado, pero no me envian el mail con los datos de acceso, y ya he probado en 2 ocasiones. Algún user y password que esté rulando x ahi para acceder?? Se sabe porqué pasa esto? Me da en la nariz que esta relacionado con el campo "Company" (empresa) que hay que cumplimentar en el registro.

EStapi
29/05/13, 20:24:25
Le damos un up al tema

+1 para ponerlo en los temas importantes

up +1

ElHechicero
29/05/13, 21:44:01
Muy bueno. Gran trabajo.

Yakandu
31/05/13, 00:42:53
Voy a ponerlo antes de que alguien la cage, primero se deodexea y luego se xipaligna

al deodexear hay que camviar, dando a la v, el api, que es 16 para JB 4.1, y no 17 que es para 4.2

Por l odemas todo guay, mi slim estará hecha pronto deodex y zipalign ;)

Johnnymlights
31/05/13, 11:13:55
Uhm, debería hacerlo. A mi me lo hace sin problemas, a saber que pasa... Hay más programas que firman, puedes probar con Android Kitchen que también tiene una opción de firmar ROM.
Si que es raro, intentare reinstalarlo y comenzar otra vez a ver, igual le echo un vistazo al kitchen ;) gracias kiamu!

novebis
06/06/13, 01:11:42
Un gran trabajo kiamu. Acabo de crear mi propio ftf y superfácil siguiendo tu tutorial :ok: y es la primera vez que lo intento.
Muchas gracias por tu tiempo!

Marc0sgb
10/06/13, 14:17:10
Buenas me gustaria kiamu proponer una idea para este pedazo tuto que te has currado y puede resultar bastante util a mi parecer si no te parece mal, para ser exacto en esta parte

http://www.htcmania.com/showpost.php?p=8696526&postcount=2

Podemos cambiar en nuestro build.prop las siguientes lineas


ro.product.name=
ro.build.fingerprint=
ro.semc.version.cust=
ro.semc.version.cust_revision=


Engañamos a pccompanion para que piense que tenemos una version u otra de firmware a la hora de descargarlo y asi podemos obtener los ftf de las diferentes compañias y regiones sin problemas pero para eso necesitamos la colaboracion de los foreros para hacer una lista

Ejemplo:

Jelly Bean CE Generica


ro.product.name= LT26i_1257-5012
ro.build.fingerprint=SEMC/LT26i_1257-5012/LT26i:4.1.2/6.2.B.0.200/N7__zg:user/release-keys
ro.semc.version.cust=1257-5012
ro.semc.version.cust_revision=R3H

pinxxo
10/06/13, 14:39:12
Pedazo de tutorial!!!! muchisimas gracias por la realización y sobre todo por compartirlo:platano:

Kiamu
10/06/13, 16:13:50
Buenas me gustaria kiamu proponer una idea para este pedazo tuto que te has currado y puede resultar bastante util a mi parecer si no te parece mal, para ser exacto en esta parte...

Buena idea, voy a añadirlo. Aunque la lista mejor abrimos un tema aparte y enlazo, así mantenemos "limpio" el tutorial y no lo centramos en el xperia s solamente.

Muchas gracias :ok:

pardaluxo
11/06/13, 02:05:26
Bueno. muy bueno tema. Ma^nana me voy a empezar con el tabajo y a ver.

linkinroy
16/06/13, 16:08:41
Con esto me voy a lanzar a cocinar mi propia rom. Si llego a algo concreto iréis viendo mis progresos, sino nada.. NO aseguro nada, pero mil gracias Kiamu!! Me gustaría ser un buen cocinero como tú!

Kiamu
16/06/13, 20:16:20
Bueno :-)
Al final doy el tutorial por "acabado". Prometo corregirlo en caso de errores y seguiré añadiendo nuevas cosas cuando vea. Pero por ahora creo que da de sobra para empezar en este mundillo.

metroid_x
16/06/13, 23:59:52
Bueno
Al final doy el tutorial por "acabado". Prometo corregirlo en caso de errores y seguiré añadiendo nuevas cosas cuando vea. Pero por ahora creo que da de sobra para empezar en este mundillo.


:campeon::campeon:

una pregunta kiamu es posible instalar el dialer y la app de mensajes de CM 10 a la stock .200

gracias

rockernaxo
17/06/13, 00:07:17
:campeon::campeon:

una pregunta kiamu es posible instalar el dialer y la app de mensajes de CM 10 a la stock .200

gracias

Te respondo yo.

Me parece que no, Sony utiliza sus propias providers para las apps. Así que no tan simple, habría que hacer un port de las app

De momento lo más parecido que tenemos para la interfaz AOSP sin las apps en negro. Pero en cuanto tenga vacaciones intentaré hacer un port (aunque no prometo resultados) jeje

metroid_x
17/06/13, 00:12:57
Te respondo yo.

Me parece que no, Sony utiliza sus propias providers para las apps. Así que no tan simple, habría que hacer un port de las app

gracias rock una lastima que no se pueda, me parece mejor el dialer de CM

rockernaxo
17/06/13, 00:34:15
gracias rock una lastima que no se pueda, me parece mejor el dialer de CM

Por poder sí que se puede, y tarde o temprano tendremos un port (hay excelentes desarrolladores en esta comunidad). La cuestión es que no es tan fácil como copiar y pegar :D

Maverck24
26/06/13, 19:28:03
Puedo hacer Deodex y Zipaling en una ROM ya instalada en el dispositivo sin tener que rehacerla y volver a flashear?
SI es así como?
Gracias :)

Kiamu
26/06/13, 21:08:43
Puedo hacer Deodex y Zipaling en una ROM ya instalada en el dispositivo sin tener que rehacerla y volver a flashear?
SI es así como?
Gracias :)

Zipalign mediante init.d si puedes (busca en xda un script para ello), deodex no.

Ultracity
26/06/13, 21:37:19
Me quito el sombrero.

Muchas gracias :aplausos:

Maverck24
27/06/13, 06:12:54
Que hay de esto Kiamu, para el deodex?

http://forum.xda-developers.com/showthread.php?t=2213235

Prefiero consultar a la voz de la experiencia antes de actuar!
Saludos

Kiamu
27/06/13, 10:14:29
Que hay de esto Kiamu, para el deodex?

http://forum.xda-developers.com/showthread.php?t=2213235

Prefiero consultar a la voz de la experiencia antes de actuar!
Saludos

No hay mucha diferencia con la que he puesto en el tutorial. Es un deodex del framework y las apks desde Windows.
Los archivos resultantes no se si vas a poder pasarlos a pelo a la ROM ya instalada sin acabar con un bootloop.
Lo mejor es que instales una deodex encima con recovery.

Maverck24
28/06/13, 04:48:34
Gracias por aclarar y por el tutorial!!

Nathrakh
06/07/13, 20:31:36
Hola que tal?, me anime a inscribirme en el foro ya que los llevo leyendo desde hace un tiempo y he aprendido bastante con ustedes y con xda "ayudandome con el translator, LOL" y me anime a hacer mi rom deodexada y zipaligneada, la cual hice con este tutorial, la monto con el recovery y hago todos los wipes pero al iniciar cae en un bootloop y nose el porque.

Si alguien pudiera ayudarme...

Saludos.

PD: Muchas gracias por el post, muy bien explicado, me a servido de mucho y eso que antes me daba miedo meterle hasta root al tlf. LOL

rockernaxo
07/07/13, 19:01:44
Hola que tal?, me anime a inscribirme en el foro ya que los llevo leyendo desde hace un tiempo y he aprendido bastante con ustedes y con xda "ayudandome con el translator, LOL" y me anime a hacer mi rom deodexada y zipaligneada, la cual hice con este tutorial, la monto con el recovery y hago todos los wipes pero al iniciar cae en un bootloop y nose el porque.

Si alguien pudiera ayudarme...

Saludos.

PD: Muchas gracias por el post, muy bien explicado, me a servido de mucho y eso que antes me daba miedo meterle hasta root al tlf. LOL

Exactamente qué le has hecho, ¿sólo deodex y zipaling? o has metido alguna cosilla más?

Nathrakh
08/07/13, 00:14:46
Solamente eso, deodex y zipalign. Yo creo que esos procesos solo se pueden realizar con la room stock, ya que lo realice con un backup que tiene ya varias apps.

Igual pude hacer el deodex con otro programa. Aunque noto el móvil un poquito más lento. Aunque leí que sólo es al principio y luego se va arreglando.

rockernaxo
10/07/13, 00:35:41
Solamente eso, deodex y zipalign. Yo creo que esos procesos solo se pueden realizar con la room stock, ya que lo realice con un backup que tiene ya varias apps.

Igual pude hacer el deodex con otro programa. Aunque noto el móvil un poquito más lento. Aunque leí que sólo es al principio y luego se va arreglando.

No es muy recomendable trabajar con backups. Yo creo que el odex es lo más rápido, si no por qué vienen los teléfonos sin deodexear de fábrica? No tendría lógica

Nathrakh
10/07/13, 02:39:13
Bueno yo use el backup para poder obtener la carpeta system. Igual ya veo que el móvil está de seda. Aplique la de "hágalo usted mismo" jejjejeje

ARASTANUS
15/07/13, 20:16:46
muchas gracias broki:ok:

linkinroy
02/09/13, 16:16:34
@Kiamu @Rockernaxo @Yakandu @Winsmel me podrias indicar como modificar un archivo .jar?? Quiero añadir lo del volumen de sonido avanzado a un mod del framework del honami, porque si flasheo uno y luego otro no funciona. También quiero saber un programa para compilar y descompilar aplicaciones. Gracias!!

rockernaxo
02/09/13, 18:32:11
@Kiamu @Rockernaxo @Yakandu @Winsmel me podrias indicar como modificar un archivo .jar?? Quiero añadir lo del volumen de sonido avanzado a un mod del framework del honami, porque si flasheo uno y luego otro no funciona. También quiero saber un programa para compilar y descompilar aplicaciones. Gracias!!

Tanto como para modificar aplicaciones como para archivos jar puedes ultilizar apktool. Tienes miles de tutoriales sobre cómo compilar/decompilar.

Lo que quieres hacer es fusionar dos códigos, mi recomendación personal es decompilar ambos archivos y comprararlos con el programa para Windows Beyond Compare. Ahora bien, sobre que líneas tienes que modificar ni idea, depende de cada mod. Tendrás que ir indagando; son muchísimos archivos, pero el Beyond te indica los que son diferentes por lo que agiliza la tarea.

Creo recordar que @Vardash sabía que líneas hay que tocar para el control avanzado del volumen. Sin embargo, esta de «retiro espiritual» XD durante esta semana.

linkinroy
02/09/13, 19:24:59
Vale una cosa, ya he modificado una apk en el ApkTool, pero la apk resultante me pone como nombre unsigned(nombre de la aplicación).apk

Esta aplicación ya es válida para que funcione?

Un saludo.

Lo he conseguido con SingApk. Gracias de todas formas, un saludo!

parece que la cosa va evolucionando, ya he conseguido descompilar .jar con baksmali y smali... poco a poco jaja. Que dificil es esto!!!

linkinroy
14/09/13, 08:43:11
Alguien me dice q tengo que modificar del framework.jar para q salga el volumen avanzado??? No tengo ni idea y hay 10083739 archivos una vez que he decompilado el classes.dex. Gracias de antemano!!

rockernaxo
14/09/13, 12:45:00
Alguien me dice q tengo que modificar del framework.jar para q salga el volumen avanzado??? No tengo ni idea y hay 10083739 archivos una vez que he decompilado el classes.dex. Gracias de antemano!!

Los smalis se llaman VolumeControlPanel o algo así... compáralos con uno ya hecho

PD: si no consigues implementarlo mañana tendré más tiempo. Miraré los archivos y te digo exactamente las líneas que hay que modificar;)

linkinroy
14/09/13, 14:09:28
Los smalis se llaman VolumeControlPanel o algo así... compáralos con uno ya hecho

PD: si no consigues implementarlo mañana tendré más tiempo. Miraré los archivos y te digo exactamente las líneas que hay que modificar;)

Nada rockernaxo, he encontrao VolumeControlPanel.smali en la carpeta android/view y los he comparado poniendo los mismos campos y dejándolos iguales pero no funciona. Esque quiero implementarle al framework.jar del HONAMI de un desarrollador de xda @thewerthon, que ha conseguido la apariencia total,animaciones, etc... pero no ha implementado el control de volumen avanzado. Es lo único que me falta para subir una versión nueva de la rom que preparé.

Te adjunto el .jar en el que quiero implementar el control avanzado de volumen, a ver si me echas un cable, gracias de antemano.

Este es el link del post del framework:

http://forum.xda-developers.com/showthread.php?t=2420551

rockernaxo
14/09/13, 15:43:28
Nada rockernaxo, he encontrao VolumeControlPanel.smali en la carpeta android/view y los he comparado poniendo los mismos campos y dejándolos iguales pero no funciona. Esque quiero implementarle al framework.jar del HONAMI de un desarrollador de xda @thewerthon, que ha conseguido la apariencia total,animaciones, etc... pero no ha implementado el control de volumen avanzado. Es lo único que me falta para subir una versión nueva de la rom que preparé.

Te adjunto el .jar en el que quiero implementar el control avanzado de volumen, a ver si me echas un cable, gracias de antemano.

Este es el link del post del framework:

http://forum.xda-developers.com/showthread.php?t=2420551

Mañana lo modifico y te subo los archivos ;)

guindilla30
27/10/13, 21:59:34
Impresionante trabajo, enhorabuena por tan buen tuto :thumbup:

volteretero
11/03/14, 22:34:04
INTRODUCCIÓN


El objetivo de este tutorial es facilitar la incursión de la gente en el mundo de las ROM personalizadas. Mostraremos que partiendo desde 0 a partir de un firmware de Sony podemos crear nuestra propia ROM personalizada. Aunque los ejemplos estén basados en un Xperia S este tutorial está pensado para Smarthphones Sony. He hecho un esfuerzo y he usado Windows para hacer el tutorial (xD)
Tú eres el único responsable de los problemas que puedan surgir en tu telefono o ordenador al seguir este manual. No me hago responsable de nada.

Nota: Los aportes y correcciones son muy bien bienvenidos.



RECURSOS




7zip (http://www.7-zip.org/)
Notepad++ (http://notepad-plus-plus.org/)
Flashtool (http://androxyde.github.io/)
Auto-Sign (http://forum.xda-developers.com/attachment.php?attachmentid=147834&d=1232310728)
Android Kitchen (http://forum.xda-developers.com/showthread.php?t=633246)
Archivo META-INF (https://mega.co.nz/#!WwQjSJTI!OoQdpl_2ynhWxtpdSrXGbWYw8_hXpYiMQouyTm0 Rg5s)
Virtuous Ten Studio (http://www.virtuous-ten-studio.com/)

Hacer este tutorial me ha llevado horas de trabajo, si te ayuda no olvides pulsar el botón gracias. Si lo usas para crear tu ROM se aceptan agradecimientos también :D
No olvides agradecer también su labor a gente que ha hecho los programas que se usan aquí como dsixda (usuario de XDA-Developers)




El penultimo archivo del primer post llamado META-INF no funciona el enlace podrias restaurarlo?

brainic
19/10/14, 18:33:21
pueden subir denuevo el archivo

Archivo META-INF

el link esta caido, gracias.

bal1mn
18/11/14, 09:13:14
como ha dicho el compañero podeis subir otra vez el archivo?.
Se puede coger ese archivo de otra rom que si funcione flasearlo por recovery?