PDA

Ver la Versión Completa : [ TUTORIAL ] Creacion de un update.zip / Modificacion de una rom (explicacion para noveles)


TTMaster
26/07/14, 02:11:08
Tutorial creacion de un update.zip / modificacion de una rom

Modificar una rom o crear un archivo instalable por recovery no es nada complicado. Tan solo tenemos que tener unas nociones basicas de los comandos u ordenes que hemos utilizado siempre en linux/android. Como vereis mas adelante vamos a utilizar comandos como por ejemplo: delete_recursive, set_perm_recursive, mount, unmount, etc., que seguro que os sonaran a muchos usuarios de linux.
Este tutorial va ha estar dividido en 5 secciones:

1.- Software necesario
2.- La carpeta META-INF y el archivo updater-script (comandos basicos)
3.- Carpetas system y data
4.- Firmado del update.zip
5.- Ejemplos practicos

1.- SOFTWARE NECESARIO
El software que os enlazo aqui debajo es necesario para poder realizar la practica:

- Zip con la carpeta META-INF DESCARGAR (http://www.mediafire.com/download/c7afucwj41jm2r8/META-INF.zip)
- Notepad++ DESCARGAR (http://download.tuxfamily.org/notepadplus/6.5.5/npp.6.5.5.Installer.exe)
- Compresor Winrar o 7zip DESCARGAR 7ZIP (http://downloads.sourceforge.net/sevenzip/7z920.exe)
- Aplicacion Auto-sign DESCARGAR (http://www.mediafire.com/download/55a98jgnd06za5x/Auto-sign.zip)
- Java JDK DESCARGAR (http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)


2.- LA CARPETA META-INF Y EL ARCHIVO UPDATER-SCRIPT (comandos basicos)

Este es sin duda el tema mas importante que hay dentro de este tuto ya que vamos a tratar algunos de los comandos y la forma que tiene android de interpretarlos.

http://i57.tinypic.com/in6g4l.jpg

2.1.- Carpeta META-INF
En esta carpeta estan todos los scripts que se van a utilizar para la correcta instalacion de nuestro archivo. No puede faltar nunca. Yo os he dejado un archivo que contiene esta carpeta ya, firmada y con algunos de los comandos que utilizaremos con los ejemplos practicos ya que de otra forma deberiamos utilizar cgwin (cocina android) para crearla.
Dentro de esta carpeta lo que nos interesa es el archivo "updater-script" que se encuentra en com/google/android.

http://i60.tinypic.com/rj4epk.jpg


2.2.- El Archivo UPDATER-SCRIPT
Este archivo es la madre del cordero. Aqui vamos a construir el script necesario para instalar nuestro archivo, indicando que es lo que queremos hacer y como, para que el sistema nos obedezca e instale todo lo que le hemos puesto y, si se lo indicamos bien, no tendremos errores.
Para modificar este archivo lo primero que tenemos que hacer es extraer el archivo y abrirlo con el Notepad++.

http://i57.tinypic.com/nexbgp.jpg

2.3.- Comandos

Vamos a describir unos comandos basicos con los que podreis trabajar. Hay muchos mas, pero creo que con estos os sobraran para empezar a trabajar con los archivos update.zip

ui_print("LO QUE QUIERAS PONER"); "LO QUE QUIERAS PONER" SALDRA EN LA PANTALLA DEL RECOVERY.
ui_print(""); Dejamos un espacio en blanco entre lineas.
delete("/system/app/clock.apk"); Borramos el archivo clock.apk de la carpeta system.
delete_recursive("/cache"); Borramos la carpeta cache.
package_extract_dir("system/app", "/system/app"); Copiamos el contenido de la carpeta system/app de nuestro zip a la memoria interna en la rura que le indicamos.
set_perm(0, 0, 0644, "/system/build.prop"); Aplicamos permisos correctos al archivo build.prop que hay dentro de la carpeta system.
show_progress(0.100000, 0); Muestra la barra de progreso (Porcion de la barra, frecuencia).
show_progress(1, 15); Igual que la anterior pero con un formato diferente. Ambos funcionan igual.
mount("ext4", "EMMC", "/dev/block/mmcblk0p13", "/system"); Montamos la carpeta system
mount("/system"); Igual que la anterior pero abreviado. Mas segura la otra para instalar roms completas
unmount("/system"); Desmontamos system

*** Nota: fijaros bien que despues del argumento siempre finalizamos con un punto y coma (;)


Siguiente post "3.- CARPETAS SYSTEM Y DATA" y "4.- FIRMANDO EL UPDATE.ZIP"

TTMaster
26/07/14, 02:11:44
Tutorial creacion de un update.zip / modificacion de una rom

3.- CARPETAS SYSTEM Y DATA

Dentro de un archivo zip instalable por recovery, podemos encontrar la siguiente estructura:

META-INF-> como ya hemos dicho, esta carpeta es la contenedora de los scripts.
data -> Para instalar aplicaciones de usuario.
sysmen/app -> Instala las aplicaciones de sistema.

Si queremos instalar aplicaciones de usuario deberemos crear una carpeta en la raiz del archivo zip con el nombre "data" en minusculas.
Si deseamos instalar aplicaciones de sistema deberemos crear una carpeta "system" y dentro de ella otra con nombre "app" siempre en minusculas.

http://i59.tinypic.com/2hmdc0o.jpg

***Nota: La carpeta system tieme una particion propia y tiene limitado el espacio. No abusar de aplicaciones de sistema.
***Nota: muchas aplicaciones de sistema dependen de sus librerias y archivos de configuracion. Es posible que tengais que incluir varias carpetas con los archivos dependientes de la aplicacion.


4.- FIRMANDO EL UPDATE.ZIP

Es obligado firmar los zip que vayamos a instalar (aunque hay veces que podremos modificarlo sin tener que volver a firmarlo) para que el sistema nos reconozca que se trata de un paquete de instalacion android. Para ello nos serviremos de la aplicacion "Auto-sign" que nos hara el trabajo por nosotros sin tener que instalar cygwin o la cocina android. Para ello nos descargamos auto-sign.zip y lo descomprimimos en la carpeta que queramos de nuestro PC.
Una vez descomprimido vamos a la carpeta "auto-sign" y colocamos alli nuestro archivo con el nombre "update.zip". Ejecutamos el archivo "sign.bat" y esperamos a que finalice.

http://i61.tinypic.com/1060un9.jpg

Una vez finalizado comprobamos que nos ha creado un archivo llamado "update_signed.zip". Este archivo es el que debemos instalar por recovery. Lo renombramos como queramos y listo. ya tenemos nuestro zip instalable por recovery.

5.- EJEMPLOS PRACTICOS

Ahora que ya sabemos como hacer nuestro primer instalable, vamos a realizar un ejercicio practico donde modificaremos el contenido de una rom recien instalada en nuestro dispositivo.
Vamos a poner tres "YSi's" (jejeje)
1.- ¿y si no me gusta la calculadora que va en la rom y deseo cambiarla por la de la LG que es cientifica y me gusta mas?
2.- ¿Y si quiero instalar los widgets o cualquier otra aplicacion que suelo usar y no me apetece volver a instalarla desde el PlayStore?
3.- ¿Y si ademas quiero que me haga los wipes cache y dalvik cache?

Primero que nada tendremos que estructurar nuestro archivo zip añadiendo las carpetas que necesitamos:
Abrimos con winrar/7zip y veremos que tenemos solo la carpeta META-INF dentro del archivo.
En el primer caso (primer ysi) la calculadora la vamos a poner como aplicacion de sistema, con lo cual, debemos crear dentro del zip la carpeta "system" y dentro de ella la carpeta "app". Una vez hecho esto colocamos el la aplicacion "calculadora_lg.apk"
En el segundo caso hablamos de aplicaciones de usuario que, como os he explicado antes, debemos instalarlas en "data". Para ello volvemos a la raiz del zip y creamos la carpeta "data". Entramos en la carpeta y metemos alli nuestras aplicaciones de widgets o nuestras preferidas.

*** Nota: Si no disponemos de las aplicaciones en el pc, basta con utilizar cualquier explorador root y sacarlas de la carpeta "data" que hay en la raiz de nuestro terminal. No confundir con la carpeta data que hay dentro del system.

Bueno, ya tenemos nuestro zip preparado y solo nos queda editar el archivo "updater-script". Para ello extraemos el archivo y lo abrimos con el notepad++ para añadir lo siguiente:

ui_print("Update personalizado");
ui_print(" Por Juanito ");
mount("/cache");
mount("/data");
mount("ext4", "EMMC", "/dev/block/mmcblk0p13", "/system");
ui_print("-- Limpiando Cache y Dalvik");
delete_recursive("/cache");
delete_recursive("/data/dalvik-cache");
delete("/system/app/Calculator.apk");
package_extract_dir("data", "/data");
show_progress(0.1, 10);
show_progress(0.2, 0);
show_progress(0.2, 10);
unmount("/system");
unmount("/cache");
unmount("/data");
ui_print("- HECHO!!!");

Como vereis hemos montado las particiones donde vamos a trabajar, hemos hecho los wipes, hemos borrado la aplicacion de la calculadora, hemos instalado la nuestra, hemos instalado las aplicaciones de usuario y hemos desmontado las particiones otra vez.
Ahora solo nos queda guardar el updater-script modificado, meterlo otra vez en el zip y firmarlo.

Suerte con esto y saludos.

TTMaster
26/07/14, 02:12:17
Preparando tutorial morphing y extraccion de system y kernel desde un ftf. (proximamente)

Kraksiplus
26/07/14, 03:18:14
Espectacular tuto

piponito
26/07/14, 04:04:51
Excelente tutorial TTMaster. Añadir que para usar "Auto-sign" deberemos tener instalado Java en nuestro equipo.

Saludos.

man88
26/07/14, 04:23:54
chincheta que no se pierda este post.:aplausos::aplausos::aplausos:

chucky6600
26/07/14, 07:13:15
Movemos a roms y desarrollo... Gracias

TTMaster
26/07/14, 11:04:53
Excelente tutorial TTMaster. Añadir que para usar "Auto-sign" deberemos tener instalado Java en nuestro equipo.

Saludos.

Es cierto. Seguro que se me han pasado varias cosas que las doy por hecho y no deberia ser asi.
Ahora edito la seccion de software necesario.
Gracias piponito

mastermil
26/07/14, 11:14:16
Los tutoriales que subes son para quitarse el sombrero, muchas gracias !

man88
27/07/14, 16:48:44
buenas ttmaster, siguiendo el ejemplo que pones cuando lo instalo en el recovery me sale error status 6 :loco:

TTMaster
27/07/14, 17:06:57
buenas ttmaster, siguiendo el ejemplo que pones cuando lo instalo en el recovery me sale error status 6 :loco:

Pasame por privado lo que estas haciendo y la copia del updater-script

man88
27/07/14, 18:13:08
Pasame por privado lo que estas haciendo y la copia del updater-script

privado enviado:ok:

boulevardll
23/11/14, 00:43:08
Hola TTMaster,
como haria para hacer un zip flasheable de mis apps,para instalarlas luego de instalar una rom por completa y no tener que estar bajandolas de nuevo del play store.
extraigo mis apps de la carpeta system, pero como haria con el updatescript