Ver Mensaje Individual
  #2  
Viejo 27/09/09, 11:14:38
Array

[xs_avatar]
superatmel
Usuario invitado
 
Mensajes: n/a

ridli
Cocinero oficial
Fecha de Ingreso: may 2009
Mensajes: 251
Modelo de PDA: G1
Versión de ROM: Donut


Como crear un update.zip
Con este tutorial vamos a aprender como generar nuestro propio UPDATE.ZIP desde 0 o bien desde uno ya generado y para ellos vamos a necesitar varias herramientas.

- JDK actualizado.
- certificado testkeys
- herramienta para firmar signapk.java
- script de actualizacion
- Testkeys: este certificado es con el que se firma el source de android cuando lo compilamos por lo tanto podemos encontrarlo en el mismo source
build/target/product/security/testkey.pk8
build/target/product/security/testkey.x509.pem
- Signapk.java: esta pequeña aplicacion tambien esta en el source de android.
build/tools/signapk/SignApk.java
- update-script: Es el script de actualizacion con el que se generaran los enlaces simbolicos y se flasheara boot, system o lo que nosotros queramos, este script esta dentro de una serie de subdirectorios dentro de META-INF. /META-INF/com/google/android/update-script

Antes de seguir vamos a ver la estructura de un update generico, estos paquetes por norma general contienen una imagen boot.img asi como un directorio SYSTEM y META-INF.
- boot.img : Imagen de arranque con la que se va a flashear nuestro telefono al actualizar. (opcional)
- SYSTEM: nuestra directorio de system modificado con el que actualizaremos nuestro telefono.
- META-INF: lugar donde se guardaran las firmas y el script de actualizacion.

Si no tenemos descargado el source de android podemos descargarnos los archivos necesarios aqui http://rapidshare.com/files/166164961/AndroidMod.zip enlace cortesia de JF.

1) Primero creamos una carpeta para nuestro proyecto y copiamos todo lo necesario, en este caso vamos a trabajar con un source compilado por nosotros y un update-script ya creado para ahorrarnos tiempo.

mkdir /<ruta>/update_android1
cd /<ruta>/update_android1
cp /<ruta_source>/build/target/product/security/testkey.pk8 .
cp /<ruta_source>/build/target/product/security/testkey.x509.pem .
cp /<ruta_source>/build/tools/signapk/SignApk.java .
cp -r /<ruta_source>/out/target/product/dream/system .
cp /<ruta_source>/out/target/product/dream/boot.img
mkdir -p META-INF/com/google/android


2) Ahora hay que descargar este update-script para ahorrarnos algo de tiempo y un binario de busybox en el mismo paquete. http://www.megaupload.com/?d=XC5AWXXD
descomprimirmos el archivo y copiamos el contenido en su lugar correspondiente ya que vamos a añadir BUSYBOX a nuestra build.

cp /<ruta>/busybox system/xbin
cp /<ruta>/update-script META-INF/com/google/android


El contenido del update-script muy simple pero no hay que despistarse ya que es necesario que este correctamente creado ya que un fallo de sintaxis puede dar al traste todo nuestro trabajo. Dentro de este script nos podemos encontrar con lo siguiente (es un archivo muy largo asi que solo indicare lo importante)
format BOOT: (borra boot)
show_progress 0.1 0 (muestra progreso)
show_progress 0.5 0
format SYSTEM: (borra SYSTEM)
copy_dir PACKAGE:system SYSTEM: (copia el directorio system en la particion SYSTEM)
set_perm_recursive 0 0 0755 0644 SYSTEM: (cambia los permisos de SYSTEM)
(...)
set_perm 0 2000 0755 SYSTEM:xbin/showslab (asigna permisos al binario showslab)
(...)
symlink /system/xbin/busybox SYSTEM:xbin/date ( crea un enlace simbolico de busybox con nombre date)
(...)
write_raw_image PACKAGE:boot.img BOOT: (flashea BOOT con boot.img)

IMPORTANTE: si un enlace simbolico esta mal creado, ha sido declarado con anterioridad o un archivo no existe dara un error al aplicar el update.zip asi que hay que tener mucho cuidado con este archivo.

3) Ahora procederemos a comprimir META-INF, SYSTEM y BOOT.IMG dentro de un mismo archivo (ojo todo esto ha de estar en la raiz del archivo comprimido, no en una carpeta)

zip -r update_prueba1.zip META-INF system boot.img

ojo que seguimos dentro de la raiz del proyecto.

4) Hay que firmar el paquete para que podamos instalarlo en cualquier telefono que acepte paquetes que no tengan una firma oficial.


java -jar signapk.jar testkey.x509.pem testkey.pk8 update_prueba1.zip update_prueba1_signed.zip

Solo hemos añadido BUSYBOX asi como los enlaces simbolicos de este y del toolbox, siempre que se añada algun binario en bin o xbin es recomendable añadirlo en el update-script para que se generen los permisos que nosotros queramos, tambien podemos añadir aplicaciones en e directorio de APP de system, scripts y todo lo que nosotros queramos a nuestro update.

Si hay algun error con el update-script o en alguna parte del tutorial avisadme para que lo arregle.
Responder Con Cita