Galletas! Nos obligan a informar que utilizamos cookies (como casi todas las webs). Al continuar navegando aceptas su uso.


No verás más estos anuncios al registrarte. Anímate, es gratis, rápido y sin spam!

TUTORIAL - Crear un update.zip - Meter apps en el sistema

Tema en 'Drivers y Herramientas PC' iniciado por samarkanda, 24 Abr 2012.

  1. samarkanda

    samarkanda Simdualero de Diamante

    • Veteran@
    3.159
    154
    12 Oct 2011
    CREAR UN UPDATE.ZIP

    Crear un update.zip personalizado para nosotros nos dará la opción de incluir en nuestra rom archivos que no existen en la misma, a través de un parche que se instalará desde el recovery (por supuesto custom).

    De esta forma se puede incluir en el parche aplicaciones que queramos que sean de sistema, incluir archivos, eliminar archivos, eliminar carpetas, etc...

    En este tutorial, y por empezar con lo más simple, explicaré cómo incluir apps para que sean de sistema.


    Doogee Shoot 2 Aliexpress Ofertas
    Al registrarte dejarás de ver este anuncio. Anímate, es gratis, rápido y sin PUBLICIDAD!

    ESTRUCTURA DEL UPDATE.ZIP

    En primer lugar nos creamos una nueva carpeta en el Pc, en el escritorio, por ejemplo. Dentro de esa nueva carpeta tendremos que incluir:

    IMPRESCINDIBLES
    La carpeta más importante es la carpeta META-INF, que contine unos archivos genéricos con certificados y demás, necesarios.
    El principal archivo es el updater-script, que es el que nosotros tendremos que modificar dependiendo lo que queramos incluir en el parche.
    /META-INF/
    /META-INF/CERT.RSA
    /META-INF/CERT.SF
    /META-INF/MANIFEST.MF
    /META-INF/GOOGLE/ANDROID/update-binary
    /META-INF/GOOGLE/ANDROID/updater-script

    Esta carpeta META-INF la podemos copiar de cualquier rom previamente descargada.

    OPCIONALES (Según lo que se quiera incluir en el parche)
    /SYSTEM/
    /DATA/


    De esta forma en la carpeta SYSTEM incluiremos los archivos que queremos que se incluyan en el parche, para que formen parte del sistema. En la carpeta DATA se incluirán los archivos que queramos incluir en la memoria interna del teléfono.

    No es necesario crear estas carpeta si no las vamos a necesitar.

    Así, en el caso que vamos a analizar queremos incluir una apk como de sistema. Tendríamos que meter esa apk (previamente descargada), en nuestro parche con la ruta:
    SYSTEM/APP/
    La carpeta APP tendríamos que crearla dentro del parche.



    COMANDOS UTILIZADOS EN EL UPDATER-SCRIPT

    Para la edición del updater-script yo utilizo el programa Notepad++. No lo hagáis con el wordpad que os dará errores.
    Lo podeís descargar de AQUI.

    Vamos a ver qué comandos se utilizan para la edición del updater-script:

    CODE, HTML o PHP:
    ui_print("       ");

    Todo lo que pongamos entre las comillas aparecerá como texto durante la instalación, no afectando al resto de la instalación. Así:
    ui_print(" Bienvenido "); se verá como Bienvenido
    ui_print("a movilesdualsim"); se verá como a movilesdualsim


    CODE, HTML o PHP:
    show_progress();
    Es para hacer una barra de progreso de la instalación. Nunca me he aclarado mucho con este comando. No lo pongo en mis parches, porque la instalación dura muy poco.


    CODE, HTML o PHP:
    format("yaffs2", "MTD", "userdata");
    Formatea la partición Data. Utilizado para instalaciones de roms completas.


    CODE, HTML o PHP:
    format("yaffs2", "MTD", "system");
    Formatea la partición System. Utilizado para instalaciones de roms completas.


    CODE, HTML o PHP:
    mount("yaffs2", "MTD", "system", "/system");
    Monta la partición System para poder incluir archivos en ella.


    CODE, HTML o PHP:
    mount("yaffs2", "MTD", "userdata", "/data");
    Igualmente monta la partición Data.


    CODE, HTML o PHP:
    package_extract_dir("system", "/system");
    Incluye en la partición System todo lo que tengamos incluído en la carpeta System de nuestro update.


    CODE, HTML o PHP:
    package_extract_dir("data", "/data");
    Incluye en la partición Data todo lo que tengamos incluido en la carpeta Data de nuestro update (si la tenemos)


    CODE, HTML o PHP:
    unmount("/system");
    Desmonta la partición System.


    CODE, HTML o PHP:
    unmount("/data");
    Desmonta la partición Data.


    Estos serían los principales comandos, existiendo además comandos para establecer permisos (esto es más complicado), para borrar archivos, para borrar carpetas, etc, etc. No tenéis más que abrir un updater-script de una rom para poder ver esos comandos.

    Notad que siempre al final de todos los comandos hay un ; . Si falta alguno- el parche no funcionará.

    EJEMPLO DE UN UPDATER-SCRIPT DE UNA ROM COMPLETA

    CODE, HTML o PHP:
    ui_print("");ui_print("===============================");      
    ui_print("    H7-3G.2.3.5-v6.6 final ");
    ui_print("");
    ui_print("    Created by: haiduongbk");
    ui_print("    retocada por samarkanda");
    ui_print("===============================");
    ui_print("");
    show_progress(0.100000, 5);
    ui_print("[ ] Format partition: DATA");
    format("yaffs2", "MTD", "userdata");
    delete_recursive("/sdcard/.android_secure");
    show_progress(0.100000, 10);
    ui_print("[ ] Mount partition: DATA");
    mount("yaffs2", "MTD", "userdata", "/data");
    show_progress(0.100000, 15);
    ui_print("[ ] Format partition: CACHE");
    format("yaffs2", "MTD", "cache");
    show_progress(0.100000, 20);
    ui_print("[ ] Format partition: SYSTEM");
    format("yaffs2", "MTD", "system");
    show_progress(0.100000, 25);
    ui_print("[ ] Mount partition: SYSTEM");
    mount("yaffs2", "MTD", "system", "/system");
    show_progress(0.200000, 35);
    ui_print("[ ] Installing files: DATA");
    package_extract_dir("data", "/data");
    package_extract_dir("SDcard", "/sdcard");
    set_perm_recursive(0, 0, 0777, 0777, "/data");
    show_progress(0.400000, 85);
    ui_print("[ ] Installing files: SYSTEM");
    package_extract_dir("system", "/system");
    symlink("aee_debuggerd", "/system/bin/debuggerd");
    symlink("toolbox", "/system/bin/cat", "/system/bin/chmod",
            "/system/bin/chown", "/system/bin/cmp", "/system/bin/date",
            "/system/bin/dd", "/system/bin/df", "/system/bin/dmesg",
            "/system/bin/getevent", "/system/bin/getprop", "/system/bin/hd",
            "/system/bin/id", "/system/bin/ifconfig", "/system/bin/iftop",
            "/system/bin/insmod", "/system/bin/ioctl", "/system/bin/ionice",
            "/system/bin/kill", "/system/bin/ln", "/system/bin/log",
            "/system/bin/ls", "/system/bin/lsmod", "/system/bin/lsof",
            "/system/bin/mkdir", "/system/bin/mount", "/system/bin/mv",
            "/system/bin/nandread", "/system/bin/netstat",
            "/system/bin/newfs_msdos", "/system/bin/notify", "/system/bin/printenv",
            "/system/bin/ps", "/system/bin/reboot", "/system/bin/renice",
            "/system/bin/rm", "/system/bin/rmdir", "/system/bin/rmmod",
            "/system/bin/route", "/system/bin/schedtop", "/system/bin/sendevent",
            "/system/bin/setconsole", "/system/bin/setprop", "/system/bin/sleep",
            "/system/bin/smd", "/system/bin/start", "/system/bin/stop",
            "/system/bin/sync", "/system/bin/top", "/system/bin/umount",
            "/system/bin/uptime", "/system/bin/vmstat", "/system/bin/watchprops",
            "/system/bin/wipe");
    set_perm_recursive(0, 0, 0755, 0644, "/system");
    set_perm_recursive(0, 2000, 0755, 0755, "/system/bin");
    set_perm_recursive(0, 0, 0777, 0777, "/system/etc/init.d");
    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(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(0, 0, 06755, "/system/bin/su");
    symlink("/system/bin/su", "/system/xbin/su");
    set_perm_recursive(0, 0, 0755, 0555, "/system/etc/ppp");
    set_perm(0, 2000, 0755, "/system/vendor");
    set_perm_recursive(0, 2000, 0755, 0755, "/system/vendor/bin");
    set_perm(0, 2000, 0755, "/system/vendor/lib");
    set_perm(0, 2000, 0755, "/system/vendor/lib/egl");
    set_perm_recursive(0, 2000, 0755, 0644, "/system/vendor/lib/hw");
    set_perm(0, 0, 0644, "/system/vendor/lib/hw/gralloc.mt6573.so");
    set_perm_recursive(0, 2000, 0755, 0755, "/system/xbin");
    set_perm(0, 1000, 0755, "/system/xbin/busybox");
    symlink("/system/xbin/busybox", "/system/bin/busybox");
    package_extract_file("installbusybox", "/tmp/installbusybox");
    set_perm(0, 0, 0777, "/tmp/installbusybox");
    run_program("/tmp/installbusybox");
    set_perm(0, 0, 06755, "/system/xbin/librank");
    set_perm(0, 0, 06755, "/system/xbin/procmem");
    set_perm(0, 0, 06755, "/system/xbin/procrank");
    set_perm(0, 0, 0755, "/system/xbin/tcpdump");
    show_progress(0.100000, 90);
    ui_print("[ ] updating boot image");
    assert(package_extract_file("boot.img", "/tmp/boot.img"),
           write_raw_image("/tmp/boot.img", "boot"),
           delete("/tmp/boot.img"));
    show_progress(0.100000, 95);
    show_progress(0.100000, 100);
    ui_print("[ ] Update Completed");
    unmount("/system");
    unmount("/cache");
    unmount("/data");
    ui_print("[ ]  Un saludo");
    ui_print("[ ] -samarkanda-");


    FINALIZANDO

    Una vez tengamos todo lo anterior hecho, lo único que nos queda es comprimirlo en zip y pasarlo a la tarjeta, para flashearlo desde el recovery. Le pondremos al zip el nombre que queramos, y nos saltamos la comprobación de firmas.



    EJEMPLO

    AQUI os dejo un parche para poder meter aplicaciones como de sistema.
    Lo único que tenéis que hacer es coger las apps que queráis e incluirlas en la ruta del zip:
    system/app
    Instaláis desde el recovery y listo.

    Estructura del updater-script de ejemplo:
    Pues es muy sencillita para no complicarnos ahora que estamos empezando:
    CODE, HTML o PHP:
    ui_print("===============================");      
    ui_print("      PARCHE PARA INCLUIR");
    ui_print("  APLICACIONES EN EL SISTEMA");
    ui_print("     creado por Samarkanda");
    ui_print("===============================");
    ui_print("");
    mount("yaffs2", "MTD", "system", "/system");
    ui_print("[ ] Instalando archivos: SYSTEM");
    package_extract_dir("system", "/system");
    unmount("/system");
    ui_print("[ ] Un saludo");



    Espero os guste este tutorial.

    Las opciones a la hora de hacer un update.zip, son innumerables.

    Un saludo

    P.D. Hala @breakk ya he echado la tarde con esto
    :omg:

    Agradecimientos al foro de HTCMANIA, en el que me he basado un poco para hacer el tutorial.
     
    Última edición por un moderador: 30 Dic 2013
    • Me Gusta Me Gusta x 4
    • Breakk

      Breakk Simdualero de Diamante

      • Cocinero Android
      • Veteran@
      11.944
      20.223
      31 May 2010
      Muy buen tutorial. ¿Porque no lo has puesto esta mañana o ayer?, anda que no peleé con el script del parche, je,je,je. Es broma.

      Gracias crack.
       
    • samarkanda

      samarkanda Simdualero de Diamante

      • Veteran@
      3.159
      154
      12 Oct 2011
      Muchas gracias @BreakkBreakk.
      Poco a poco iré haciendo tutoriales de todo lo que sé o medio sé, para ver si alguien coge el relevo y me jubilo, XD. No creo que me jubile, me gusta el follón este. Pero alguna ayudita nueva siempre viene bien, para los que estamos siempre liados, como @eduardomoeduardomo, @hammyhammy, tú ...

      Un saludo
       
      Última edición por un moderador: 28 Sep 2013
    • jcestal

      jcestal Simdualero de Platino

        259
        25
        8 Nov 2011
        Castilla-León
        Buen tutorial, ya que hay poca información acerca del updater-script, muy interesante para los que están empezando y un punto de partida para modificar Roms completas.

        Una duda: ¿Por que determinadas APP dan error de proceso cuando la instalas como aplicación de sistema?

        Saludos
         
      • pauete

        pauete Simdualero de Diamante

        • Veteran@
        9.189
        1.287
        12 May 2010
        Hasta hoy no había leído este hilo con atención.
        Gracias @samarkandasamarkanda.
        Para los MTK6575 no sirve no? Creo que no montan en "yaffs2"
         
        Última edición por un moderador: 28 Sep 2013
      • samarkanda

        samarkanda Simdualero de Diamante

        • Veteran@
        3.159
        154
        12 Oct 2011
        @pauetepauete, la verdad que no lo sé, pero supongo que si la versión de los MT6575 es la 2.3.6 sí que sirva. Todo es probar metiendo una app y a ver si la instala.
        Otra cosa ya es que lleven ICS. Entonces ni de coña.
         
        Última edición por un moderador: 28 Sep 2013
      • pauete

        pauete Simdualero de Diamante

        • Veteran@
        9.189
        1.287
        12 May 2010
        El otro día vi una herramienta para desempaquetar system.img
        "unyaffs.rar": http://www.mediafire.com/?4r04871vr8mc7oq

        Se descomprime la carpeta contenida "img-unpaker" y dentro de ella copiamos un system.img
        Sobre este archivo clickamos el botón derecho del ratón y le decimos "abrir con" y elegimos el programa "unyaffs.exe".
        El system.img empieza a descompilarse en ese mismo directorio.

        Creo que lo que decía @BreakkBreakk en otro hilo era convertir un nandroid en un system.img
        No sé si es posible, supongo que sí.
        Porque el system.img que hay dentro de un nandroid no podría flashearse con flashtool?
         
        Última edición por un moderador: 28 Sep 2013
      • WooW

        WooW Simdualero de Diamante

        • Cocinero Android
        • Miembro de Honor
        • Veteran@
        8.065
        5.600
        31 May 2011
        Elche
        En el Lenovo A60 con MT6573 y android 2.3.5 si que funcionaban los system.img del nandroid para pasarlos con el flashtool pero en 2.3.6 no lo he probado.

        saludos y paz.
         
      • pauete

        pauete Simdualero de Diamante

        • Veteran@
        9.189
        1.287
        12 May 2010
        Creo que los tiros van por si es Yaffs2 (MTK6573) o ext2,3(MTK6575)

        El unyaffs.exe sólo sirve para MTK6573.
         
      • Breakk

        Breakk Simdualero de Diamante

        • Cocinero Android
        • Veteran@
        11.944
        20.223
        31 May 2010
        Yo diria que unyaffs sirve para archivos con particiones yaffs2, pero vale para mas modelos de mtk. Por ejemplo en el 890D Alcatel yo si podia abrirlo y el micro era mtk 6516.

        Saludos.
         
      • pauete

        pauete Simdualero de Diamante

        • Veteran@
        9.189
        1.287
        12 May 2010
        Sí, @BreakkBreakk pero los MTK6575 ya tienen particiones ext4

        img822.imageshack.us_img822_1612_201206192052.

        El pro que posteó @chaskamanchaskaman en este otro hilo sólo monta en yaffs2.
         
        Última edición por un moderador: 24 Mar 2017
      • pauete

        pauete Simdualero de Diamante

        • Veteran@
        9.189
        1.287
        12 May 2010