[TUTORIAL][Nível-Médio] Explicação do updater-script

  • Respostas:9
  • Sticky
Conta desativada
  • Posts no fórum: 1 987

18/12/2013, 19:19:14 via Web

Aqui eu vou ensinar uma breve explicação do updater-script e pra quê cada comando serve, espero que vocês gostem! Vamos lá:



androiddevlab_2011



Veja um exemplo de um updater-script :


1assert(getprop("ro.product.device") == "janice" || getprop("ro.build.product") == "janice" ||
2 getprop("ro.product.device") == "i9070" || getprop("ro.build.product") == "i9070" ||
3 getprop("ro.product.device") == "GT-I9070" || getprop("ro.build.product") == "GT-I9070");
4mount("ext4", "EMMC", "/dev/block/mmcblk0p3", "/system");
5package_extract_file("system/bin/backuptool.sh", "/tmp/backuptool.sh");
6package_extract_file("system/bin/backuptool.functions", "/tmp/backuptool.functions");
7set_perm(0, 0, 0777, "/tmp/backuptool.sh");
8set_perm(0, 0, 0644, "/tmp/backuptool.functions");
9run_program("/tmp/backuptool.sh", "backup");
10unmount("/system");
11show_progress(0.500000, 0);
12unmount("/system");
13format("ext4", "EMMC", "/dev/block/mmcblk0p3", "0", "/system");
14mount("ext4", "EMMC", "/dev/block/mmcblk0p3", "/system");
15package_extract_dir("recovery", "/system");
16package_extract_dir("system", "/system");
17symlink("../xbin/su", "/system/bin/su");
18symlink("Roboto-Bold.ttf", "/system/fonts/DroidSans-Bold.ttf");
19symlink("Roboto-Regular.ttf", "/system/fonts/DroidSans.ttf");
20symlink("libGLESv2.so", "/system/lib/libGLESv3.so");
21symlink("logcat", "/system/bin/lolcat");
22symlink("mksh", "/system/bin/sh");
23symlink("mount.exfat", "/system/bin/fsck.exfat",
24 "/system/bin/mkfs.exfat");
25symlink("pigz", "/system/xbin/unpigz");
26symlink("toolbox", "/system/bin/cat", "/system/bin/chcon",
27 "/system/bin/chmod", "/system/bin/chown", "/system/bin/clear",
28 "/system/bin/cmp", "/system/bin/cp", "/system/bin/date",
29 "/system/bin/dd", "/system/bin/df", "/system/bin/dmesg",
30 "/system/bin/du", "/system/bin/getenforce", "/system/bin/getevent",
31 "/system/bin/getprop", "/system/bin/getsebool", "/system/bin/grep",
32 "/system/bin/hd", "/system/bin/id", "/system/bin/ifconfig",
33 "/system/bin/iftop", "/system/bin/insmod", "/system/bin/ioctl",
34 "/system/bin/ionice", "/system/bin/kill", "/system/bin/ln",
35 "/system/bin/load_policy", "/system/bin/log", "/system/bin/ls",
36 "/system/bin/lsmod", "/system/bin/lsof", "/system/bin/md5",
37 "/system/bin/mkdir", "/system/bin/mount", "/system/bin/mv",
38 "/system/bin/nandread", "/system/bin/netstat",
39 "/system/bin/newfs_msdos", "/system/bin/notify", "/system/bin/printenv",
40 "/system/bin/ps", "/system/bin/r", "/system/bin/reboot",
41 "/system/bin/renice", "/system/bin/restart", "/system/bin/restorecon",
42 "/system/bin/rm", "/system/bin/rmdir", "/system/bin/rmmod",
43 "/system/bin/route", "/system/bin/runcon", "/system/bin/schedtop",
44 "/system/bin/sendevent", "/system/bin/setconsole",
45 "/system/bin/setenforce", "/system/bin/setfattr", "/system/bin/setprop",
46 "/system/bin/setsebool", "/system/bin/sleep", "/system/bin/smd",
47 "/system/bin/start", "/system/bin/stop", "/system/bin/sync",
48 "/system/bin/top", "/system/bin/touch", "/system/bin/umount",
49 "/system/bin/uptime", "/system/bin/vmstat", "/system/bin/watchprops",
50 "/system/bin/wipe");
51set_perm_recursive(0, 0, 0755, 0644, "/system");
52set_perm_recursive(0, 0, 0755, 0755, "/system/addon.d");
53set_perm_recursive(0, 2000, 0755, 0755, "/system/bin");
54set_perm(0, 3003, 02750, "/system/bin/netcfg");
55set_perm(0, 0, 0755, "/system/bin/ping");
56set_perm(0, 2000, 0750, "/system/bin/run-as");
57set_perm(1014, 2000, 0550, "/system/etc/dhcpcd/dhcpcd-run-hooks");
58set_perm_recursive(0, 2000, 0755, 0755, "/system/etc/init.d");
59set_perm(0, 0, 0755, "/system/etc/init.d");
60set_perm(0, 2000, 0550, "/system/etc/init.goldfish.sh");
61set_perm_recursive(0, 0, 0755, 0555, "/system/etc/ppp");
62set_perm(0, 2000, 0755, "/system/vendor");
63set_perm(0, 2000, 0755, "/system/vendor/etc");
64set_perm(0, 2000, 0755, "/system/vendor/firmware");
65set_perm_recursive(0, 2000, 0755, 0644, "/system/vendor/lib");
66set_perm(0, 0, 0644, "/system/vendor/lib/libbt-vendor.so");
67set_perm_recursive(0, 2000, 0755, 0755, "/system/xbin");
68set_perm(0, 0, 06755, "/system/xbin/librank");
69set_perm(0, 0, 06755, "/system/xbin/procmem");
70set_perm(0, 0, 06755, "/system/xbin/procrank");
71set_perm(0, 0, 06755, "/system/xbin/su");
72set_perm(0, 0, 06755, "/system/xbin/tcpdump");
73show_progress(0.200000, 0);
74show_progress(0.200000, 10);
75package_extract_file("system/bin/backuptool.sh", "/tmp/backuptool.sh");
76package_extract_file("system/bin/backuptool.functions", "/tmp/backuptool.functions");
77set_perm(0, 0, 0777, "/tmp/backuptool.sh");
78set_perm(0, 0, 0644, "/tmp/backuptool.functions");
79run_program("/tmp/backuptool.sh", "restore");
80delete("/system/bin/backuptool.sh");
81delete("/system/bin/backuptool.functions");
82show_progress(0.200000, 10);
83assert(package_extract_file("boot.img", "/tmp/boot.img"),
84 write_raw_image("/tmp/boot.img", "/dev/block/mmcblk0p15"),
85 delete("/tmp/boot.img"));
86show_progress(0.100000, 0);
87unmount("/system");





1. getprop
O objetivo desse comando é fazer uma instalação segura, Como por exemplo o script acima é do dispositivo GT-I9070, Esse comando vai verificar no build.prop do dispositivo se o modelo é o correspondente, Caso não for a instalação é abortada.





2. mount
Esse comando monta a partição desejada, Para alterar algum arquivo você sempre têm quê montar a partição correspondente.




3. package_extract_file
Esse comando extrai um arquivo específico para um específico diretório.




4. set_perm
Esse comando é essencial, com ele você coloca as permissões corretas para cada arquivo.




5. run_program
Este comando executa scripts ".sh" ou binários como o busybox.




6. unmount
Esse comando faz o contrário do mount, Ou seja, ele desmonta a partição específica.




7. format
Esse comando formata uma partição específica, Exemplo, Eu quero formatar a partição system, Más eu tenho quê monta-la primeiro




8. package_extract_dir
Esse comando faz algo similar ao package_extract_file, Más ele extraí uma pasta para outra diretório.




9. symlink
Esse comando liga arquivos entre arquivos, como por exemplo o busybox quê está separado entre vários outros binários, Então esse comando "linka" os arquivos específicos para o funcionamento correto.




10. set_perm_recursive
Esse comando faz o mesmo quê o set_perm, Más ele é usado para mudar as permissões de pastas.




11. delete
Como o próprio nome já diz, Esse comando deleta arquivos específicos.




12. delete_recursive
Mesma coisa do delete, só quê esse comando deleta pastas em vez de arquivos.




13. ui_print
O comando ui_print é usado para dar observações de texto durante a instalação do arquivo.

— alterado em 18/12/2013, 20:02:44

Lost in Amsterdam?

Conta desativadaL. Schefer

Responder
Conta desativada
  • Posts no fórum: 1 987

18/12/2013, 19:20:06 via Web

Nesse local vou ensinar como criar um bem simples e enxuto. Digamos quê eu queria instalar um app no sistema pelo Recovery eu vou usar esse modelo :


1run_program("/sbin/busybox", "mount", "/system");
2package_extract_dir("system", "/system");
3set_perm(0, 0, 0644, "/system/app/Nome-do-app.apk");
4run_program("/sbin/busybox", "unmount", "/system");



Como você pode ver, Primeiro eu montei a partição a qual eu vou modificar quê no caso é a system, Logo após eu extraí o arquivo para pasta correspondente e coloquei a permissão rw-r--r-- e depois desmontei a partição, Faça o Download do modelo aqui e modifique como quiser :lol:


Observações
Sempre use no final de cada comando o sinal ";" para o Recovery interpretar quê é um comando

— alterado em 18/12/2013, 20:20:08

Lost in Amsterdam?

Viko

Responder
hugo.gabriel999
  • Posts no fórum: 947

18/12/2013, 19:25:59 via Web

Muito bom Paulo :)

Adiciona o ui_print(" ")

https://play.google.com/store/apps/developer?id=Hugo+Gabriel

Responder
Conta desativada
  • Posts no fórum: 1 987

18/12/2013, 19:28:22 via App

Hugo Gabriel
Muito bom Paulo :)

Adiciona o ui_print(" ")

O ui_print eu nem uso muito.. Más eu vou colocar e no lugar reservado eu vou dar uma breve prévia de como fazer um

Lost in Amsterdam?

Responder
Conta desativada
  • Posts no fórum: 2 281

18/12/2013, 19:47:14 via Web

já até sabia como fazer um, mas sua explicação ajuda muito, valeu
bom trabalho

Bruno Tallyson

Responder
L. Schefer
  • Posts no fórum: 2 051

18/12/2013, 19:54:02 via Web

Good job bro! :D

"Antes de realizar qualquer procedimento, leia, aprenda, entenda, tire as dúvidas lendo, execute, se tiver problemas leia as experiências dos outros usuários, e re-execute, persista e nunca desista!"

Novo no fórum? Leia as regras de publicações, elas vão te ajudar muito na hora de postar um novo tópico.

Responder
Conta desativada
  • Posts no fórum: 1 987

18/12/2013, 19:56:41 via App

Bruno Thallyson
já até sabia como fazer um, mas sua explicação ajuda muito, valeu
bom trabalho

Não é difícil, Prá um pequeno arquivo não.. :grin:

Lost in Amsterdam?

Responder
Conta desativada
  • Posts no fórum: 1 987

18/12/2013, 19:57:35 via App

Laíre S.
Good job bro! :D

Thanks for the support man :lol:

Lost in Amsterdam?

L. Schefer

Responder
Conta desativada
  • Posts no fórum: 2 281

18/12/2013, 19:59:53 via Web

vou da um "UP" pra todos lerem kk

Bruno Tallyson

Responder
Luciano trindade
  • Posts no fórum: 22

07/06/2014, 19:34:58 via Web

boa tarde!!

Vc poderia me passar algum link ou alma apostila que mostra todos o scripts do build.prop pra eu aprender mais sobre eles. meu e mai e luciano030490@gmail.com. se me ajudar fico grato..

muito bom seu tutorial.

Responder