Bem-vindo ao fórum do Arena 4G!

Junte-se a essa incrível comunidade para tirar suas dúvidas e ter acesso aos links.

Desvendando o mundo da programação Android ( updater-script)

Discussão em 'Fórum dos desenvolvedores Android' iniciado por Jefferson hoffmeister, Setembro 22, 2015.

  1. Jefferson hoffmeister

    Jefferson hoffmeister Administrador
    Administrador

    Julho 10, 2015
    311
    80
    127
    Masculino
    #1 Jefferson hoffmeister, Setembro 22, 2015
    Editado por um moderador: Setembro 22, 2015
    Aqui uma breve explicação do e pra quê cada comando serve, espero que vocês gostem!
    Vamos lá:
    4Geek Lab.png

    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.


    OBS.: Não sou desenvolvedor, apenas um curioso que gosta de compartilhar conhecimento, e meu objetivo aqui nesse post , é iniciar um debate e compartilhamento de conhecimento, se você é DEV. e quiser ajudar a enriquecer esse tópico, vou ficar feliz.
     
    Arena 4G e Heroghast curtiram isso.

Compartilhe esta página