Tutoriales Manuales, tutos, recetas, postres, etc

Respuesta
 
Herramientas
  #1  
Viejo 27/09/16, 18:08:05
Array

[xs_avatar]
Juanro49 Juanro49 no está en línea
Colaborador/a
 
Fecha de registro: ene 2013
Localización: Extremadura
Mensajes: 11,686
Modelo de smartphone: Xperia 10 V
Tu operador: Yoigo
Cómo editar tus propios updater-script e instrucciones usadas

¿Que es el updater-script?

Updater-script es un archivo escrito en el lenguaje de programación de scripts "edify" *que da instrucciones al recovery para realizar ciertas tareas.
El updater-script se localiza en /META-INF/com/google/android/updater-script en el flashable zip.

Algunas reglas básicas:
  • Cada declaración debe terminar con un punto y coma (;)
  • Los comentarios deben comenzar con # (apenas se usan)
  • Las instrucciones de las funciones deben estar delimitadas por comillas dobles (” “)

Para editarlo necesitaremos 3 cosas:
  • Notepad++ (Gedit, Pluma o similar en Linux)
  • 7Zip (solo necesario en windows, linux ya trae su propio gestor de archivadores)
  • El zip de la rom que queramos modificar o un Update.zip vacío si queremos empezar de nuevo

Funciones utilizadas

ui_print(” “); – Graba instrucciones que queramos que aparezcan en el recovery cuando se ejecuta el updater-script. Se puede escribir cualquier cosa entre comillas dobles.
  • Ejemplo: ui_print(“Formatting partitions…”); mostrará la instrucción entre comillas dobles, Formatting partitions…
show_progress(fraction, seconds); – Muestra la barra de progreso durante un período de segundos. Utilice 3.14 en fractions y segundos totales necesarios para completar el flasheo en seconds.
  • Ejemplo: show_progress(3.14, 100); hará avanzar la barra de progreso de 0% a 100% en 100 segundos. Si el flasheo toma 20 segundos para terminar, utilizar 20, si se tarda 200 segundos, use 200.
format(“filesystem”, “partition_type”, “partition”, "mountpoint"); – Usado para formatear una partición específica. Use MTK droid tools -> Block maps para ver los detalles de bloques de su teléfono.
  • Ejemplo: format(“ext4”, “EMMC”, “/dev/block/mmcblk0p5”, "/system"); formateará la partición mmcblk0p5 (en este caso es /system).
Cada teléfono puede tener diferentes sistemas de archivos, tipo de partición, particiones. Aquí ext4 es el tipo de sistema de archivos, EMMC tipo de partición y /dev/block/mmcblk0p5 es la partición. Algunos update-binary (el binario que le lee las instrucciones del updater-script al recovery) necesitan de 5 intrucciones en la función format por lo que se le añade un 0 entre la partición y el punto de montaje quedando así: format("ext4", "EMMC", "/dev/block/mmcblk0p5", "0", "/system");

mount(“filesystem”, “partition_type”, “partition”, “mountpoint”); – Usado para montar una determinada partición.
  • Ejemplo: mount(“ext4”, “EMMC”, “/dev/block/mmcblk0p5”, “/system”) montará la partición /system.
delete(“file_path”); – Usado para eliminar un archivo determinado, donde file_path es la localización del archivo que se desea eliminar.
  • Ejemplo: delete(“/system/app/Music.apk”); eliminará Music.apk del directorio /system/app.
delete_recursive(“folder_path”); – Usado para eliminar todos los archivos de un directorio. Se eliminará el directorio también.
  • Ejemplo: delete_recursive(“/system/etc/bluetooth”); eliminará el directorio bluetooth de /system/etc.
package_extract_file(“source”, “destination”); – Usado para extraer un archivo del zip al dispositivo.
  • Ejemplo: package_extract_file(“boot.img”, “/dev/block/bootdevice/by-name/boot”); extraerá el archivo boot.img a la partición boot en /dev/block/bootdevice/by-name/. Aquí boot.img is el origen en el flashable zip y /dev/block/bootdevice/by-name/boot es el destino en el dispositivo.
package_extract_dir(“source”, “destination”); – Usado para extraer un directorio del flasheble zip en un directorio del dispositivo.
  • Ejemplo: package_extract_dir(“system”, “/system”); copiará todo el contenido del directorio system del zip a la partición /system del dispositivo (previamente montada con mount).
symlink("origen","destino");*– Usado para crear enlaces simbólicos. Se usa cuando un archivo es necesario en dos ubicaciones diferentes y así no tener queduplicar el archivo.
  • Ejemplo: symlink("/data/etc/wifi/wl1271-nvs.bin", "/system/etc/firmware/ti-connectivity/wl1271-nvs.bin");
set_perm(uid, gid, perm, “file_path”); – Usado para asignar permisos a un archivo. aquí "uid" es el user id, "gid" es el groud id y "perm" son los permisos que se asignan al archivo.
  • Ejemplo: set_perm(0, 0, 0644, “/system/priv-app/SystemUI.apk”); asignará permisos 644 (rw- r-- r--) a SystemUI.apk.
set_perm_recursive(uid, gid, dirperm, fileperm, “directory_path”); – Usado para asignar permisos a los archivos y directorios presentes dentro del directorio especificado.
  • Ejemplo: set_perm_recursive(0, 0, 0755, 0644, “/system”); asignará permisos 755 (rwx r-x r-x) a todos los directorios dentro de /system y 644 (rw- r-- r--) a todos los archivos presentes en /system.
r representa permiso de lectura
w representa permiso de escritura
x representa permiso de ejecución
valores numéricos:
1 : –x
2 : -w-
3 : -wx
4 : r–
5 : r-x
6 : rw-
7 : rwx
Puede usar la aplicación Root Explorer para ver los permisos de cualquier archivo o directorio.

write_raw_image(“file_path”, “filename”); – Se utiliza para escribir un archivo de imagen *al dispositivo.
  • Ejemplo: write_raw_image(“/tmp/boot.img”, “boot”); escribirá el archivo boot.img del directorio /tmp a la partición boot
run_program("script.sh");*– Se utiliza para ejecutar scripts que hayamos añadido al zip.

run_program("script.sh" "action");*– Variante del anterior, el cual permite realizar acciones con los scripts que lo permitan.
  • Ejemplo:*run_program("/tmp/backuptool.sh" "backup"); ejecuta el script backuptool.sh cuyas funciones son realizar backup o restaularlos (en este caso realizarlo)


unmount(“mountpoint”); – Usado para desmontar particiones.
  • Ejemplo: unmount(“/system”); desmontará la partición /system.

Ejemplo de updater-script (Explicado):

Código:
# UPDATER-SCRIPT PROVIDED BY QAMRUL HAQUE
# FOR GUIDE VISIT: WWW.MICROMAXUNITE2.NET
Estas líneas son comentarios. Se utiliza sólo para información. Será ignorado por el recovery.


Código:
ui_print(“”);
Imprime una línea en blanco.


Código:
show_progress(3.14, 150);
Avanzar la barra de progreso durante 150 segundos. Teniendo en cuenta que el flasheo tendrá 150 segundos para terminar.


Código:
ui_print(“—————-“);
ui_print(” * ROM NAME * /”);
ui_print(” VERSION NAME /”);
ui_print(“—————-“);
ui_print(“”);
Imprime —————- en la 1ª línea,
ROM NAME en la 2ª línea
VERSION NAME en la 3ª línea
—————- en la 4ª línea
y en blanco en la 5ª línea.



Código:
ui_print(“Formatting partitions…”);
format(“ext4”, “EMMC”, “/dev/block/mmcblk0p5”, "/system");
format(“ext4”, “EMMC”, “/dev/block/mmcblk0p6”, "/cache");
format(“ext4”, “EMMC”, “/dev/block/mmcblk0p7”, "/data");
1ª instrucción imprimirá Formatting partitions…
2ª instrucción formateará la partición /system. Usa esta opción si flasheas nueva rom. No usar en actualización.
3ª instrucción formateará la partición /cache.
4ª instrucción formateará la partición /data. No usar en actualización.



Código:
ui_print(“Mounting partitions…”);
mount(“ext4”, “EMMC”, “/dev/block/mmcblk0p5”, “/system”);
mount(“ext4”, “EMMC”, “/dev/block/mmcblk0p7”, “/data”);
1ª instrucción imprimirá Mounting partitions…
2ª y 3ª instrucción montarán las particiones /system y /data respectivamente.
Las particiones deben montarse para borrar archivos viejos y copiar archivos nuevos.



Código:
ui_print(“Extracting files…”);
package_extract_dir(“data”, “/data”);
package_extract_dir(“system”, “/system”);
Usado para extraer los nuevos archivos a las particiones /data y /system.



Código:
ui_print(“Creating symlinks…”);

symlink("toolbox", "/system/bin/cat");
symlink("toolbox", "/system/bin/chmod");
symlink("toolbox", "/system/bin/chown");
symlink("toolbox", "/system/bin/cmp");
symlink("toolbox", "/system/bin/ctrlaltdel");
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/lsusb");
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("mksh", "/system/bin/sh");
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");
symlink("/system/fonts/Roboto-Regular.ttf", "/system/fonts/DroidSans.ttf");
symlink("/system/fonts/Roboto-Bold.ttf", "/system/fonts/DroidSans-Bold.ttf");
symlink("/factory/hdcp.keys", "/system/vendor/firmware/hdcp.keys");
symlink("/data/etc/wifi/wl1271-nvs.bin", "/system/etc/firmware/ti-connectivity/wl1271-nvs.bin");

Crea los enlaces simbólicos necesarios



Código:
ui_print(“Setting permissions…”);
set_perm_recursive(1000, 1000, 0771, 0644, “/data/app”);
set_perm_recursive(0, 0, 0755, 0644, “/system”);
set_perm_recursive(0, 0, 0777, 0777, “/system/etc/init.d”);
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_pair_devlist.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(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, 0, 06755, “/system/xbin/su”);
set_perm(0, 1000, 0755, “/system/xbin/busybox”);
Estos son los permisos para la partición /system y directorio /data/app. No es necesario añadir nuevos permisos para los archivos de /system. Basta con poner los archivos y los permisos correctos serán fijados por declaraciones anteriores.


Código:
ui_print(“Flashing kernel…”);
assert(package_extract_file(“boot.img”, “/tmp/boot.img”),
write_raw_image(“/tmp/boot.img”, “boot”),
delete(“/tmp/boot.img”);
Estas líneas flashearán el kernel/boot.img. Coloque el boot.img en la raíz del zip.


Código:
ui_print(“Wiping dalvik-cache…”);
delete_recursive(“/data/dalvik-cache”);
Usado para limpiar Dalvik-cache. Dalvik-cache debe ser borrado después de las actualizaciónes para evitar problemas con aplicaciones.


Código:
ui_print(“Unmounting partitions…”);
unmount(“/system”);
unmount(“/data”);
Usado para desmontar las particiones /data y /system.


Código:
ui_print(“Finished update”);
ui_print(“Reboot your phone”);
ui_print(“”);
ui_print(“—————-“);
ui_print(” * CREDITS: * /”);
ui_print(” * *NAME1 * * /”);
ui_print(” * *NAME2 * * /”);
ui_print(” * *NAME3 * * /”);
ui_print(“—————-“);
ui_print(“”);
Imprimirá los creditos para los contribuyentes.




Ejemplo de updater-script (Completo):


Código:
# UPDATER-SCRIPT PROVIDED BY QAMRUL HAQUE
# FOR GUIDE VISIT: WWW.MICROMAXUNITE2.NET

ui_print(“”);
show_progress(3.14, 150);

ui_print(“—————-“);
ui_print(” * ROM NAME * /”);
ui_print(” VERSION NAME /”);
ui_print(“—————-“);
ui_print(“”);

ui_print(“Formatting partitions…”);
format(“ext4”, “EMMC”, “/dev/block/mmcblk0p5”, "/system");
format(“ext4”, “EMMC”, “/dev/block/mmcblk0p6”, "/cache");
format(“ext4”, “EMMC”, “/dev/block/mmcblk0p7”, "/data");

ui_print(“Mounting partitions…”);
mount(“ext4”, “EMMC”, “/dev/block/mmcblk0p5”, “/system”);
mount(“ext4”, “EMMC”, “/dev/block/mmcblk0p7”, “/data”);

ui_print(“Extracting files…”);
package_extract_dir(“data”, “/data”);
package_extract_dir(“system”, “/system”);

ui_print(“Creating symlinks…”);
symlink("toolbox", "/system/bin/cat");
symlink("toolbox", "/system/bin/chmod");
symlink("toolbox", "/system/bin/chown");
symlink("toolbox", "/system/bin/cmp");
symlink("toolbox", "/system/bin/ctrlaltdel");
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/lsusb");
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("mksh", "/system/bin/sh");
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");
symlink("/system/fonts/Roboto-Regular.ttf", "/system/fonts/DroidSans.ttf");
symlink("/system/fonts/Roboto-Bold.ttf", "/system/fonts/DroidSans-Bold.ttf");
symlink("/factory/hdcp.keys", "/system/vendor/firmware/hdcp.keys");
symlink("/data/etc/wifi/wl1271-nvs.bin", "/system/etc/firmware/ti-connectivity/wl1271-nvs.bin");

ui_print(“Setting permissions…”);
set_perm_recursive(1000, 1000, 0771, 0644, “/data/app”);
set_perm_recursive(0, 0, 0755, 0644, “/system”);
set_perm_recursive(0, 0, 0777, 0777, “/system/etc/init.d”);
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_pair_devlist.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(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, 0, 06755, “/system/xbin/su”);
set_perm(0, 1000, 0755, “/system/xbin/busybox”);

ui_print(“Flashing kernel…”);
assert(package_extract_file(“boot.img”, “/tmp/boot.img”),
write_raw_image(“/tmp/boot.img”, “boot”),
delete(“/tmp/boot.img”);

ui_print(“Wiping dalvik-cache…”);
delete_recursive(“/data/dalvik-cache”);

ui_print(“Unmounting partitions…”);
unmount(“/system”);
unmount(“/data”);

ui_print(“Finished update”);
ui_print(“Reboot your phone”);
ui_print(“”);
ui_print(“—————-“);
ui_print(” * CREDITS: * /”);
ui_print(” * *NAME1 * * /”);
ui_print(” * *NAME2 * * /”);
ui_print(” * *NAME3 * * /”);
ui_print(“—————-“);
ui_print(“”);


Fuente: http://www.droidgyan.com/updater-script
__________________
Consulta como ver TV y leer noticias desde tu movil en una sola app con FeedTV. Mis artículos en Plume.
Responder Con Cita


Respuesta

Estás aquí
Regresar   Portal | Indice > La Cocina de ROMs > Tutoriales



Hora actual: 02:28:14 (GMT +1)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /