PDA

Ver la Versión Completa : Como crear un update.zip


ridli
03/06/09, 09:51:36
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 (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 (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.

crebaindamme
03/06/09, 09:56:29
Excelente Ridli... Buen trabajo. Gracias por el aporte.

andres_ontur
03/06/09, 11:29:29
Espero que alguien del foro se anime y tengamos una rom android htcmania jaj

ridli
03/06/09, 11:45:44
Es muy sencillo crear o modificar un update y es algo que cualquiera puede hacer en 5 minutillos.

Segun me aburra en el trabajo ire haciendo mas tutoriales o si necesitais alguno os lo ire haciendo.

Dild0
03/06/09, 12:13:08
es igual para los magic??? seguro q por el foro de los g2 alguien se anima tambien... si dices q no es muy complicado seguire tus manuales aver q tal
sl2

kakadeluxe
03/06/09, 12:54:31
Excelente aporte y gracia ridli :elmejor::elmejor:

dta1974
03/06/09, 13:12:40
¡¡¡¡Qué guapo!!! Se agradece muchísimo.

Gracias ridli,seguiré tu tutorial.

ridli
03/06/09, 13:16:58
es igual para los magic??? seguro q por el foro de los g2 alguien se anima tambien... si dices q no es muy complicado seguire tus manuales aver q tal
sl2

Es el mismo proceso ya que no hay ninguna diferencia en este tipo de cosas con un G1 y dudo que en otras cosas tampoco la haya.

Si lo que estas es pensando en portar una build de G1 a G2 quizas no tengas ningun problema pero es probable que puedas tenerlo con alguna libreria un poco mas especifica de la G2.

vierco
03/06/09, 16:21:44
Muy buen aporte compañero, gracias ;)

DaWeIII
04/07/09, 17:22:23
Estaba intentando seguir tu tutorial... pero, no hay manera de encontrar todas esas carpetas que dices en los primeros pasos. Todos los comandos los entiendo, pero... hay uno que pone:

cp -r /<ruta_source>/out/target/product/dream/system .

Esa carpeta la incluyes en el JDK que has puesto ahi? Porque no hay maneras... me estoy bajando el JDK completo a ver si lo conseguimos...

Saludos!

crebaindamme
04/07/09, 19:25:06
Este tutorial parte de un source compilado. Si descargas el source de android y lo compilas esa es la ruta donde guarda los archivos recien compilados, si descomprimes el androidMod.zip del link que nos pone ridli, deberías tener las carpetas y archivos necesarios. En cualquier caso podrías coger un update.zip y coger los archivos que necesites de ahí (claro que entonces las rutas serían diferentes). Te aconsejo que hagas una prueba siguiendo los pasos con el androidMod.zip, y una vez que lo hayas hecho, verás claramente los cambios que deber realizar en el proceso.
Un saludo.

ridli
06/07/09, 06:37:19
Estaba intentando seguir tu tutorial... pero, no hay manera de encontrar todas esas carpetas que dices en los primeros pasos. Todos los comandos los entiendo, pero... hay uno que pone:

cp -r /<ruta_source>/out/target/product/dream/system .

Esa carpeta la incluyes en el JDK que has puesto ahi? Porque no hay maneras... me estoy bajando el JDK completo a ver si lo conseguimos...

Saludos!

Como dice crebaindamme este tuto parte de una compilacion de android desde el source.
Si no quieres trabajar desde el source lo unico que has de hacer es bajarte el archivo androidMod.zip y descomprimirlo en el directorio donde vayas a trabajar y obtener lo que necesites de un update.zip de alguna otra persona.

<ruta>, <ruta_source>, <lo que sea> lo uso para intentar no liar a la gente con rutas que no existen ya que como cada cual es de su padre y de su madre donde yo tengo mi source de android compilado igual otro tiene fotos en bikini.

Si la unica duda que has tenido por ahora es esa me alegro, porque yo he vuelto a leer el tutorial y no me he enterado de nada, quizas sea por las horas.

crebaindamme
06/07/09, 08:25:05
jajajajajajaajajaja:risitas::risitas::risitas:
Muy bueno ridli...
En cualquier caso a mi me parece que esta bien explicado... Siempre se puede mejorar, pero en ese caso me parece que el tuto te ocuparía como 50 páginas ya que habría que explicar muchas cosas desde la base.

Por cierto... ¿que es eso de que tienes la donut? ¿Lograste compilar el source y meterlo en la dream? Si este es el caso ¿en que punto está actualmente?

Un saludo, figura

ridli
06/07/09, 16:56:40
jajajajajajaajajaja:risitas::risitas::risitas:
Muy bueno ridli...
En cualquier caso a mi me parece que esta bien explicado... Siempre se puede mejorar, pero en ese caso me parece que el tuto te ocuparía como 50 páginas ya que habría que explicar muchas cosas desde la base.

Por cierto... ¿que es eso de que tienes la donut? ¿Lograste compilar el source y meterlo en la dream? Si este es el caso ¿en que punto está actualmente?

Un saludo, figura

Llevo con la donut desde hace 1 mes o poco mas y antes de eso tambien la habia tenido puesta pero me toco quitarla para modificar el Firmware de Movistar y colgarlo.

Funciona bien... por ahora la unca aplicacion que me da algun problema es la Camara pero es por el kernel... soy algo borrico y en vez de hacerlo con un 2.6.27 lo he compilado con un 2.6.29. Mejoras no trae ninguna que sea realmente importante y que merezca la pena destacar, es rapida eso si te lo puedo decir.

crebaindamme
06/07/09, 19:43:05
Bueno... pues ya contarás, yo ahora metí la ramjet v7, le puse una partición linux-swap en la SD y le metí el setCPU.... j****, va mangado el telefono...
Tengo una pregunta ¿sabes como montar un system.img para extraer los archivos desde linux? Se que la imagen tiene un sistema de archivos yaffs2, he probado a montarla sin éxito y a desempaquetarla mediante el unyaffs, pero me saca unos archivos no legibles (en principio), y además sólo me permite sacar los del system.img, no del boot.img ni del recovery.img. Creo que tiene que ser más fácil.
Sé que tu habías toqueteado el backup original de movistar del system.img ¿como lo hiciste?
Un saludete

ridli
08/07/09, 03:59:51
pues para el backup original de movistar hice la cosa mas simple que se puede hacer.... lo use con el sdk de Android.
emulator -avd <el nombre del avd> -system /<ruta>/system.img

despues lo saque todo con un adb pull
mkdir system
adb pull /system system/

Pero no recuerdo ahora mismo que hacia con los enlaces simbolicos... :loco:

De todas formas son imagenes yaffs2 y no yaffs, ojo que no es lo mismo.

crebaindamme
08/07/09, 07:23:05
Ya se que no es lo mismo... pero el unyaffs permite extraer imagenes yaffs2 (o almenos eso pone en la página del desarrollador).
En fin, muchas gracias Ridli... Haré algunas pruebas y ya te contaré.
Un saludo

ridli
09/07/09, 06:21:26
anda pues mañana te lo pruebo desde una debian y te cuento que sale, desde Mac Os me ha sido imposible intentarlo.

La verdad es que es mucho mas limpio hacerlo asi que la chapuza de usar el emulador y sacarlo a capon :P

Morpheo17
28/07/09, 14:40:02
EDITO: El hilo de Como compilar android me ha resuelto muchísimas dudas.

erpirao
05/08/09, 00:12:28
hola, buenas, estoy siguiendo el tutorial, y, hasta meter aplicaciones, llego más o menos bien (uso de base la cyanogen 3.6.8.1, estoy mirando thedudes 1.3rc2), pero lo que me interesa más es meter la configuración del teclado en español, y no hay tu tia, se flashea bien, pero tras arranque, el tlfno entra en un bucle, en el que primero, no te deja usar el teclado físico, y después, está constantemente pidiendo el asistente de inicio, no quiero estar flaseando constantemente (no creo que sea bueno), y es que hasta los botones físicos no van (ni encender, ni menu....), ya no se que hacer, por el momento, creo que voy a restaurar la versión que tenía esta tarde (tiraré del backup nandroid que felizmente hice).. y ya veré...

es que es una puñeta que ninguna bios te meta el teclado en español, leñe

elreymon
19/09/09, 18:47:09
Pues acabo de firmar una radio.img usando el método aquí indicado y ha fallado.
A la hora de hacer el flash no ha conseguido pasar el paso de verificacion de firma.....

Cualquier idea será bienvenida.

crebaindamme
22/09/09, 06:34:57
A ver colega, creo q andas un poco perdido. Para firmar se firma el update.zip, no el archivo imagen como tal. Además, para que quieres firmar la imagen de la radio? Que me parece bien que alguien se meta con eso, es curiosidad simplemente.
Un saludo

tr3sor
10/02/10, 22:24:22
Buenas cocineros y cocinillas:

Yo todavía no soy ni pinche, así que nadie se sienta ofendido.

Tengo un problema, y es que uso Windows (por favor, no me pegueis por ello, pero es lo que hay).

¿Podeis traducir el manual para máqinas windows?

Suelo ser algo ducho para estas cosas, por lo que si alguno me da algunas pinceladas, lo "traduzco" para que otra gente empiece a hacer sus primeros pinitos, y así de esa forma aporto algo al foro, que siempre estoy gorroneando conocimientos.

Saludos!!

crebaindamme
27/02/10, 11:57:18
Hola tr3sor...
A ver, el problema con Windows parte de que no se puede compilar el codigo de Android con este Sistema Operativo, no así con Mac o Linux.
En cualquier caso, es posible descomprimir el update.zip, cambiar ficheros y volver a firmar, del mismo modo que se hace en linux (puesto que para firmar se usa java, y este es independiente de la plataforma, en lo concerniente al usuario, claro), por lo tanto podrías utilizar los mismos comandos mediante un "cmd".
Un saludete