samarkanda
Diamante
- Mensajes
- 3.158
- Puntos
- 2.103
CREAR UN UPDATE.ZIP
Crear un update.zip personalizado para nosotros nos dará la opción de incluir en nuestra rom archivos que no existen en la misma, a través de un parche que se instalará desde el recovery (por supuesto custom).
De esta forma se puede incluir en el parche aplicaciones que queramos que sean de sistema, incluir archivos, eliminar archivos, eliminar carpetas, etc...
En este tutorial, y por empezar con lo más simple, explicaré cómo incluir apps para que sean de sistema.
ESTRUCTURA DEL UPDATE.ZIP
En primer lugar nos creamos una nueva carpeta en el Pc, en el escritorio, por ejemplo. Dentro de esa nueva carpeta tendremos que incluir:
IMPRESCINDIBLES
La carpeta más importante es la carpeta META-INF, que contine unos archivos genéricos con certificados y demás, necesarios.
El principal archivo es el updater-script, que es el que nosotros tendremos que modificar dependiendo lo que queramos incluir en el parche.
/META-INF/
/META-INF/CERT.RSA
/META-INF/CERT.SF
/META-INF/MANIFEST.MF
/META-INF/GOOGLE/ANDROID/update-binary
/META-INF/GOOGLE/ANDROID/updater-script
Esta carpeta META-INF la podemos copiar de cualquier rom previamente descargada.
OPCIONALES (Según lo que se quiera incluir en el parche)
/SYSTEM/
/DATA/
…
De esta forma en la carpeta SYSTEM incluiremos los archivos que queremos que se incluyan en el parche, para que formen parte del sistema. En la carpeta DATA se incluirán los archivos que queramos incluir en la memoria interna del teléfono.
No es necesario crear estas carpeta si no las vamos a necesitar.
Así, en el caso que vamos a analizar queremos incluir una apk como de sistema. Tendríamos que meter esa apk (previamente descargada), en nuestro parche con la ruta:
SYSTEM/APP/
La carpeta APP tendríamos que crearla dentro del parche.
COMANDOS UTILIZADOS EN EL UPDATER-SCRIPT
Para la edición del updater-script yo utilizo el programa Notepad++. No lo hagáis con el wordpad que os dará errores.
Lo podeís descargar de AQUI.
Vamos a ver qué comandos se utilizan para la edición del updater-script:
Código:
ui_print(" ");
Todo lo que pongamos entre las comillas aparecerá como texto durante la instalación, no afectando al resto de la instalación. Así:
ui_print(" Bienvenido "); se verá como Bienvenido
ui_print("a movilesdualsim"); se verá como a movilesdualsim
Código:
show_progress();
Código:
format("yaffs2", "MTD", "userdata");
Código:
format("yaffs2", "MTD", "system");
Código:
mount("yaffs2", "MTD", "system", "/system");
Código:
mount("yaffs2", "MTD", "userdata", "/data");
Código:
package_extract_dir("system", "/system");
Código:
package_extract_dir("data", "/data");
Código:
unmount("/system");
Código:
unmount("/data");
Estos serían los principales comandos, existiendo además comandos para establecer permisos (esto es más complicado), para borrar archivos, para borrar carpetas, etc, etc. No tenéis más que abrir un updater-script de una rom para poder ver esos comandos.
Notad que siempre al final de todos los comandos hay un ; . Si falta alguno- el parche no funcionará.
EJEMPLO DE UN UPDATER-SCRIPT DE UNA ROM COMPLETA
Código:
ui_print("");ui_print("===============================");
ui_print(" H7-3G.2.3.5-v6.6 final ");
ui_print("");
ui_print(" Created by: haiduongbk");
ui_print(" retocada por samarkanda");
ui_print("===============================");
ui_print("");
show_progress(0.100000, 5);
ui_print("[ ] Format partition: DATA");
format("yaffs2", "MTD", "userdata");
delete_recursive("/sdcard/.android_secure");
show_progress(0.100000, 10);
ui_print("[ ] Mount partition: DATA");
mount("yaffs2", "MTD", "userdata", "/data");
show_progress(0.100000, 15);
ui_print("[ ] Format partition: CACHE");
format("yaffs2", "MTD", "cache");
show_progress(0.100000, 20);
ui_print("[ ] Format partition: SYSTEM");
format("yaffs2", "MTD", "system");
show_progress(0.100000, 25);
ui_print("[ ] Mount partition: SYSTEM");
mount("yaffs2", "MTD", "system", "/system");
show_progress(0.200000, 35);
ui_print("[ ] Installing files: DATA");
package_extract_dir("data", "/data");
package_extract_dir("SDcard", "/sdcard");
set_perm_recursive(0, 0, 0777, 0777, "/data");
show_progress(0.400000, 85);
ui_print("[ ] Installing files: SYSTEM");
package_extract_dir("system", "/system");
symlink("aee_debuggerd", "/system/bin/debuggerd");
symlink("toolbox", "/system/bin/cat", "/system/bin/chmod",
"/system/bin/chown", "/system/bin/cmp", "/system/bin/date",
"/system/bin/dd", "/system/bin/df", "/system/bin/dmesg",
"/system/bin/getevent", "/system/bin/getprop", "/system/bin/hd",
"/system/bin/id", "/system/bin/ifconfig", "/system/bin/iftop",
"/system/bin/insmod", "/system/bin/ioctl", "/system/bin/ionice",
"/system/bin/kill", "/system/bin/ln", "/system/bin/log",
"/system/bin/ls", "/system/bin/lsmod", "/system/bin/lsof",
"/system/bin/mkdir", "/system/bin/mount", "/system/bin/mv",
"/system/bin/nandread", "/system/bin/netstat",
"/system/bin/newfs_msdos", "/system/bin/notify", "/system/bin/printenv",
"/system/bin/ps", "/system/bin/reboot", "/system/bin/renice",
"/system/bin/rm", "/system/bin/rmdir", "/system/bin/rmmod",
"/system/bin/route", "/system/bin/schedtop", "/system/bin/sendevent",
"/system/bin/setconsole", "/system/bin/setprop", "/system/bin/sleep",
"/system/bin/smd", "/system/bin/start", "/system/bin/stop",
"/system/bin/sync", "/system/bin/top", "/system/bin/umount",
"/system/bin/uptime", "/system/bin/vmstat", "/system/bin/watchprops",
"/system/bin/wipe");
set_perm_recursive(0, 0, 0755, 0644, "/system");
set_perm_recursive(0, 2000, 0755, 0755, "/system/bin");
set_perm_recursive(0, 0, 0777, 0777, "/system/etc/init.d");
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(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(0, 0, 06755, "/system/bin/su");
symlink("/system/bin/su", "/system/xbin/su");
set_perm_recursive(0, 0, 0755, 0555, "/system/etc/ppp");
set_perm(0, 2000, 0755, "/system/vendor");
set_perm_recursive(0, 2000, 0755, 0755, "/system/vendor/bin");
set_perm(0, 2000, 0755, "/system/vendor/lib");
set_perm(0, 2000, 0755, "/system/vendor/lib/egl");
set_perm_recursive(0, 2000, 0755, 0644, "/system/vendor/lib/hw");
set_perm(0, 0, 0644, "/system/vendor/lib/hw/gralloc.mt6573.so");
set_perm_recursive(0, 2000, 0755, 0755, "/system/xbin");
set_perm(0, 1000, 0755, "/system/xbin/busybox");
symlink("/system/xbin/busybox", "/system/bin/busybox");
package_extract_file("installbusybox", "/tmp/installbusybox");
set_perm(0, 0, 0777, "/tmp/installbusybox");
run_program("/tmp/installbusybox");
set_perm(0, 0, 06755, "/system/xbin/librank");
set_perm(0, 0, 06755, "/system/xbin/procmem");
set_perm(0, 0, 06755, "/system/xbin/procrank");
set_perm(0, 0, 0755, "/system/xbin/tcpdump");
show_progress(0.100000, 90);
ui_print("[ ] updating boot image");
assert(package_extract_file("boot.img", "/tmp/boot.img"),
write_raw_image("/tmp/boot.img", "boot"),
delete("/tmp/boot.img"));
show_progress(0.100000, 95);
show_progress(0.100000, 100);
ui_print("[ ] Update Completed");
unmount("/system");
unmount("/cache");
unmount("/data");
ui_print("[ ] Un saludo");
ui_print("[ ] -samarkanda-");
FINALIZANDO
Una vez tengamos todo lo anterior hecho, lo único que nos queda es comprimirlo en zip y pasarlo a la tarjeta, para flashearlo desde el recovery. Le pondremos al zip el nombre que queramos, y nos saltamos la comprobación de firmas.
EJEMPLO
AQUI os dejo un parche para poder meter aplicaciones como de sistema.
Lo único que tenéis que hacer es coger las apps que queráis e incluirlas en la ruta del zip:
system/app
Instaláis desde el recovery y listo.
Estructura del updater-script de ejemplo:
Pues es muy sencillita para no complicarnos ahora que estamos empezando:
Código:
ui_print("===============================");
ui_print(" PARCHE PARA INCLUIR");
ui_print(" APLICACIONES EN EL SISTEMA");
ui_print(" creado por Samarkanda");
ui_print("===============================");
ui_print("");
mount("yaffs2", "MTD", "system", "/system");
ui_print("[ ] Instalando archivos: SYSTEM");
package_extract_dir("system", "/system");
unmount("/system");
ui_print("[ ] Un saludo");
Espero os guste este tutorial.
Las opciones a la hora de hacer un update.zip, son innumerables.
Un saludo
P.D. Hala @breakk ya he echado la tarde con esto :omg:
Agradecimientos al foro de HTCMANIA, en el que me he basado un poco para hacer el tutorial.
Última edición por un moderador: