Red de conocimiento informático - Espacio del host - Quiero aprender a portar el sistema Android.

Quiero aprender a portar el sistema Android.

Cómo hacer una ROM

Los entusiastas de Android que estén interesados ​​en jugar con teléfonos móviles deberían estar familiarizados con las ROM personalizadas. Cuando presenté cómo obtener permisos de root, utilicé directamente la ROM personalizada MoDaCo como ejemplo. Hay muchas ROM mejores adecuadas para Hero, como la ROM Custom Hero de Drizzy, etc., que se pueden encontrar en XDA. Debe haber muchos amigos que sientan curiosidad por saber cómo se crean estas ROM. Teniendo en cuenta que hay relativamente poca información sobre la comunidad china, me gustaría presentar aquí algunos principios básicos.

En el caso de las ROM de terceros, suelen incluir dos partes, una imagen de recuperación y un update.zip. La característica de la mayoría de las ROM de terceros es que agregan muchas cosas, como el programa de superusuario para obtener permisos de root, Busybox para expandir las funciones bajo la línea de comando, varios archivos de configuración o gadgets, como abrir la configuración regional china predeterminado, etcétera. Todos estos cambios aparentemente mágicos se realizan en update.zip. La función principal de la imagen de recuperación personalizada es guiar las operaciones del usuario, como permitirle realizar una copia de seguridad primero, luego aplicar update.zip y luego reiniciar. Dado que el acoplamiento entre la imagen de recuperación personalizada y update.zip es muy pequeño, muchas ROM personalizadas utilizan directamente la misma imagen de recuperación personalizada. Ésta parece ser del autor de MoDaCo. Luego, mi artículo anterior ya dio una breve explicación de la imagen de recuperación, por lo que aquí presento principalmente la producción de update.zip.

Si descomprimimos directamente el update.zip en la ROM MoDaCo, encontraremos un boot.img, una carpeta de datos, una carpeta del sistema y una carpeta META-INF. Esta carpeta de datos contiene init.rc y, en el sistema, init.rc está originalmente en el directorio de datos. Por supuesto, las funciones de los dos son diferentes. La función principal de init.rc aquí es iniciar y ejecutar el comando que desea ejecutar. Por ejemplo, init.rc de MoDaCo es instalar Busybox.

Lo que merece una explicación detallada es la carpeta del sistema. El sistema de la versión ROM de MoDaCo tiene una serie de herramientas que el autor espera incluir en el sistema para los archivos apk, colóquelos en la aplicación, herramientas en bin y xbin, etc. En otras palabras, la jerarquía de directorios del sistema o los datos depende de usted a qué desea colocar y qué directorio debe ejecutar en el sistema en línea. Debe haber una ruta de directorio correspondiente en update.zip, y luego simplemente coloque las cosas. ahí dentro.

Para ser más específicos, ahora vamos a seguir el mismo patrón y crear un nuevo update.zip, por lo que el primer paso es crear una carpeta primero

mkdir new-update

Bien, suponiendo que el propósito de mi nuevo update.zip es preinstalar uno de mis propios programas, my.apk, entonces creo el subdirectorio correspondiente

mkdir -p new-update/system /app

cp my.apk

De esta forma se completa el directorio del sistema.

Pero en este momento, la jerarquía de directorios de update.zip aún no está terminada. Vemos que hay una carpeta llamada META-INF en update.zip en la ROM de MoDaCo. directorio raíz, hay capas dentro. El directorio incluye un archivo llamado update-script con el siguiente contenido

show_progress 0.1 0

copy_dir PACKAGE:system SISTEMA:

set_perm_recursive 0 0 0755 0644 SISTEMA:xbin

set_perm_recursive 0 0 0755 0644 SISTEMA:sd

set_perm 0 0 04755 SISTEMA:bin/su

set_perm 0 0 04755 SISTEMA:bin/a2sd

set_perm 0 0 04755 SISTEMA:xbin/busybox

copy_dir PAQUETE:data DATOS

show_progress 0.2 0

formato BOOT:

p>

write_raw_image PAQUETE:boot.img BOOT:

show_progress 0.2 100

La mayor parte del contenido aquí es específico de la modificación ajustes que desea realizar. Por ejemplo

copy_dir PACKAGE:system SYSTEM:

Copie las nuevas herramientas del sistema al teléfono y luego

set_perm_recursive 0 0 0755 0644 SYSTEM:xbin

set_perm_recursive 0 0 0755 0644 SISTEMA:sd

set_perm 0 0 04755 SISTEMA:bin/su

set_perm 0 0 04755 SISTEMA:bin/a2sd

set_perm 0 0 04755 SISTEMA:xbin/busybox

Es para configurar los permisos de nuevos programas en MoDaCo ROM, y luego

copiar_dir PAQUETE:data DATOS:

Copie el contenido de datos (es decir, init.rc) al teléfono móvil y luego

formatee BOOT:

write_raw_image PAQUETE:boot.img BOOT:

Actualiza la partición de arranque.

Así que no tenemos tantas cosas nuevas aquí, ¿cómo deberíamos escribirlo?

copy_dir PAQUETE:system SISTEMA:

set_perm_recursive 0 0 04755 SISTEMA:app/my.apk

Eso es todo. Por supuesto, también puedes hacer otras cosas, como agregar un FORMATO DE DATOS o algo así ^_^ Es broma, no hagas esto, de lo contrario se perderán todos tus datos.

Bien, eso significa que debemos crear un directorio /META-INF/com/google/ en nuestro directorio de nueva actualización y luego colocar el nuevo script de actualización en él.

¿Terminaste? Ni siquiera cerca. De hecho, si no tienes otras necesidades, entonces se acabó y puedes saltarte esta pequeña sección a continuación. La siguiente pequeña sección trata sobre boot.img.

En el artículo sobre cómo modificar el Ramdisk y la imagen de arranque del sistema Android, hablamos de que si hay un problema con la actualización de la imagen de arranque, debemos usar otros métodos para permitir que el sistema arranque nuestra propia imagen de arranque. Naturalmente, es utilizar la actualización comprimida. El update.zip de la versión ROM de MoDaCo también incluye un boot.img, pero si tenemos un boot.img que hemos modificado para diversas necesidades, naturalmente podemos sustituir el original. Por supuesto, tenga en cuenta que si se agrega boot.img, la frase

write_raw_image PACKAGE:boot.img BOOT:

no puede faltar en el script de actualización.

Bien, ahora tenemos

/system/app/my.apk

/META-INF/com/google en nuestro directorio de nueva actualización / script de actualización

/META-INF/MANIFEST.MF

/META-INF/CERT.SF

/META-INF/CERT.RSA< / p>

boot.img

Bueno, entonces entramos en la etapa de empaquetado. Quizás te preguntes, ¿qué tiene esto de difícil? Puedes simplemente cerrarlo. Si fuera así de simple. Después de empaquetarlo, debe firmar todo su contenido y obtener el certificado correspondiente antes de que pueda ser reconocido en modo fastboot y flasheado exitosamente.

Antes de firmar su archivo, haga estas cosas primero

Paquete. Ingrese a la carpeta de actualización, zip update.zip xxx xxxx xxxx xxxx xxxx. ¿Qué significa? Simplemente empaquete los archivos que necesita y no use ./* como parámetros. Y la ruta relativa es mejor durante la actualización. No utilice comandos como zip update.zip ./update/* para empaquetar fuera.

Vaya al sitio web de Sun para descargar el último

<. p>Descargar este archivo testsign debe usar JRE1.6.0.16 o superior. Sé que esto es un poco desagradable, pero el testigh.jar proporcionado para descargar está compilado de acuerdo con esta versión o superior. No puede ejecutarlo si usa la versión anterior. versión.

Bien, después de la descarga, ejecuta este comando

~/jre1.6.0_16/bin/java -classpath testsign_path/testsign.jar testsign update.zip update-signed.zip< / p>

Para explicar un poco, el programa java se encuentra en la última versión de jre. testsign_path es donde se coloca testsign.jar. Se recomienda colocarlo en el directorio de herramientas de sdk. update es el archivo que se va a firmar y update-signed es el nombre del archivo generado especificado.

Después de ejecutar el signo, use unzip -l para buscar y encontrará

/META-INF/MANIFEST.MF

/META-INF/CERT .SF

/META-INF/CERT.RSA