intronauta
09/01/11, 14:20:01
A partir del Clockworkmod recovery v3.0 desaparece la compatibilidad con los update-script tradicionales en formato AMEND, que ya fue depreciado por Android en Donut 1.6 y solo es compatible con updater-script en formato EDIFY para solventar algunas limitaciones con el formato AMEND.
A diferencia de los update-script, los updater-script necesitan un binario llamado update-binary para poder ejecutarse. Éste se obtiene compilando desde las fuentes, pero adjunto una plantilla de la carpeta META-INF con un update-binary extraído del zip usado en el kernel advanced voodoo v666, así solo necesitamos acompañarlo de nuestro updater-script.
Para saber más sobre cómo funciona un update-script pásate por aquí, aunque la sintaxis difiere entre amend y edify, utilizan la misma lógica al menos en los comandos más básicos y comunes http://www.htcmania.com/showthread.php?t=156478
Herramientas para pasar automáticamente de AMEND a EDIFY:
HTC Android Kitchen http://forum.xda-developers.com/showthread.php?t=633246
Amend2edify: http://forum.xda-developers.com/showthread.php?p=10411403
Comandos básicos
Los updater-script permiten introducir comentarios # , tenlo en cuenta a la hora de mantener orden y transparencia en tu código.
Imprimir mensaje en pantalla
ui_print("HOLA MUNDO!");
Barra de progreso (show progress)
show_progress(porción de la barra, frecuencia);
Una vez más este comando me trae loco, he visto dos formatos diferentes, ambos válidos:
show_progress(0.500000, 40);show_progress(1, 15); Montar unidades
Al contrario que con otros dispositivos que funcionan con MTD, por ahora nosotros necesitamos montarlas un poco más "artesanalmente".
run_program("/sbin/mount", "/dev/block/stl9", "/system");
run_program("/sbin/mount", "/dev/block/stl10", "/dbdata");
run_program("/sbin/mount", "/dev/block/stl11", "/cache");
run_program("/sbin/mount", "/dev/block/mmcblk0p2", "/data");
run_program("/sbin/mount", "/dev/block/mmcblk0p1", "/sdcard");Desmontar unidades
Es recomendable desmontar las unidades cuando terminemos de trabajar en ellas
run_program("/sbin/umount", "/dev/block/stl9");
run_program("/sbin/umount", "/dev/block/stl10");
run_program("/sbin/umount", "/dev/block/stl11");
run_program("/sbin/umount", "/dev/block/mmcblk0p2");
run_program("/sbin/umount", "/dev/block/mmcblk0p1");
Copiar archivos a la memoria interna
Copiar archivos contenidos dentro de la carpeta "system" del update.zip a /system/app
package_extract_dir("system", "/system/app");
Borrar archivos de la memoria interna
delete("/system/app/Stk.apk");
delete("/system/app/ADWLauncher.apk", "/system/app/Browser.apk", "/system/app/Calculator.apk", "/system/app/Calendar.apk", ...);
Borrar carpetas de la memoria interna
delete_recursive("/data/dalvik-cache");
Formatear
El comando format tradicionalmente funciona con sistemas MTD -por ahora no válido para el galaxy-, pero podemos utilizar un sistema equivalente eliminando recursivamente las carpetas contenedoras de cada unidad:
delete_recursive("/system");
delete_recursive("/dbdata");
delete_recursive("/cache");
delete_recursive("/data");
delete_recursive("/sdcard");
Symlinks
symlink("origen","destino");Permisos
set_perm(uid, gid, permisos, "ruta")
set_perm(0, 2000, 0550, "/system/etc/init.goldfish.sh");set_perm_recursive(uid, gid, permisos_directorio, permisos_archivos, "ruta")
set_perm_recursive(0, 2000, 0755, 0644, "/system");
Ejecutar un archivo (binario o script)
Ejecutando desde la raíz del update.zip
run_program("script.sh");
Ejecutando desde la memoria interna. Debe copiarse previamente a /tmp.
run_program("/tmp/script.sh")
run_program("/tmp/script.sh", "argumento1", "argumento2",...)Ejemplo: Flashear un kernel con redbend_ua (asumiendo que tenemos redbend_ua y zImage dentro de /updates)
package_extract_dir("updates", "/tmp/updates");
set_perm(0, 0, 0755, "/tmp/updates/redbend_ua");
run_program("/tmp/updates/redbend_ua", "restore", "/tmp/updates/zImage", "/dev/block/bml7");
A diferencia de los update-script, los updater-script necesitan un binario llamado update-binary para poder ejecutarse. Éste se obtiene compilando desde las fuentes, pero adjunto una plantilla de la carpeta META-INF con un update-binary extraído del zip usado en el kernel advanced voodoo v666, así solo necesitamos acompañarlo de nuestro updater-script.
Para saber más sobre cómo funciona un update-script pásate por aquí, aunque la sintaxis difiere entre amend y edify, utilizan la misma lógica al menos en los comandos más básicos y comunes http://www.htcmania.com/showthread.php?t=156478
Herramientas para pasar automáticamente de AMEND a EDIFY:
HTC Android Kitchen http://forum.xda-developers.com/showthread.php?t=633246
Amend2edify: http://forum.xda-developers.com/showthread.php?p=10411403
Comandos básicos
Los updater-script permiten introducir comentarios # , tenlo en cuenta a la hora de mantener orden y transparencia en tu código.
Imprimir mensaje en pantalla
ui_print("HOLA MUNDO!");
Barra de progreso (show progress)
show_progress(porción de la barra, frecuencia);
Una vez más este comando me trae loco, he visto dos formatos diferentes, ambos válidos:
show_progress(0.500000, 40);show_progress(1, 15); Montar unidades
Al contrario que con otros dispositivos que funcionan con MTD, por ahora nosotros necesitamos montarlas un poco más "artesanalmente".
run_program("/sbin/mount", "/dev/block/stl9", "/system");
run_program("/sbin/mount", "/dev/block/stl10", "/dbdata");
run_program("/sbin/mount", "/dev/block/stl11", "/cache");
run_program("/sbin/mount", "/dev/block/mmcblk0p2", "/data");
run_program("/sbin/mount", "/dev/block/mmcblk0p1", "/sdcard");Desmontar unidades
Es recomendable desmontar las unidades cuando terminemos de trabajar en ellas
run_program("/sbin/umount", "/dev/block/stl9");
run_program("/sbin/umount", "/dev/block/stl10");
run_program("/sbin/umount", "/dev/block/stl11");
run_program("/sbin/umount", "/dev/block/mmcblk0p2");
run_program("/sbin/umount", "/dev/block/mmcblk0p1");
Copiar archivos a la memoria interna
Copiar archivos contenidos dentro de la carpeta "system" del update.zip a /system/app
package_extract_dir("system", "/system/app");
Borrar archivos de la memoria interna
delete("/system/app/Stk.apk");
delete("/system/app/ADWLauncher.apk", "/system/app/Browser.apk", "/system/app/Calculator.apk", "/system/app/Calendar.apk", ...);
Borrar carpetas de la memoria interna
delete_recursive("/data/dalvik-cache");
Formatear
El comando format tradicionalmente funciona con sistemas MTD -por ahora no válido para el galaxy-, pero podemos utilizar un sistema equivalente eliminando recursivamente las carpetas contenedoras de cada unidad:
delete_recursive("/system");
delete_recursive("/dbdata");
delete_recursive("/cache");
delete_recursive("/data");
delete_recursive("/sdcard");
Symlinks
symlink("origen","destino");Permisos
set_perm(uid, gid, permisos, "ruta")
set_perm(0, 2000, 0550, "/system/etc/init.goldfish.sh");set_perm_recursive(uid, gid, permisos_directorio, permisos_archivos, "ruta")
set_perm_recursive(0, 2000, 0755, 0644, "/system");
Ejecutar un archivo (binario o script)
Ejecutando desde la raíz del update.zip
run_program("script.sh");
Ejecutando desde la memoria interna. Debe copiarse previamente a /tmp.
run_program("/tmp/script.sh")
run_program("/tmp/script.sh", "argumento1", "argumento2",...)Ejemplo: Flashear un kernel con redbend_ua (asumiendo que tenemos redbend_ua y zImage dentro de /updates)
package_extract_dir("updates", "/tmp/updates");
set_perm(0, 0, 0755, "/tmp/updates/redbend_ua");
run_program("/tmp/updates/redbend_ua", "restore", "/tmp/updates/zImage", "/dev/block/bml7");