Pulsa aquí para quitar la publicidad.

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

      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.



      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.220
        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

          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 Oro

            248
            22
            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

              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.039
              5.585
              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.220
              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

              [​IMG]

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

              pauete Simdualero de Diamante

              • Veteran@
              9.189
              1.287
              12 May 2010
            Verificación:
            Borrador guardado Borrador eliminado

            Compartir esta página

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