Tutoriales Manuales, tutos, recetas, postres, etc


 
Herramientas
  #1  
Viejo 27/09/16, 18:08:05
Avatar de Juanro49
Juanro49 Juanro49 no está en línea
Colaborador/a
Mensajes: 11,686
 
Fecha de registro: ene 2013
Localización: Extremadura
Mensajes: 11,686
Modelo de smartphone: Xperia 10 V
Versión de ROM: SailfishOS
Tu operador: Yoigo
Mencionado: 429 comentarios
Tagged: 11 hilos
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
Responder Con Cita


Respuesta

Estás aquí
Regresar   HTCMania > La Cocina de ROMs > Tutoriales


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 13:38:26 (GMT +1)

Cookies settings
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007