Ver Mensaje Individual
  #1  
Viejo 18/10/11, 20:53:08
Array

[xs_avatar]
euki euki no está en línea
Miembro del foro
 
Fecha de registro: jul 2008
Mensajes: 314
Modelo de smartphone: HTC Diamond

[Android] Compila tu propia ROM basada en las fuentes de XDAndroid

##############################
# ###########################
# #
INDICE

1. Descripción
1.1 Sobre lel tuto
2. Requisitos
1.1 Archivos necesarios
3. Instalación
3.1 Pre-configuración
3.2 Repositorios
3.2.1 Instalar Repo
3.2.2 Descargar los repositorios
3.3 Compilando
3.3.1 Preparando los archivos propietarios y librerías
3.3.2 Comenzando a compilar
3.4 Volver a compilar
4. ANEXOS
4.1 ANEXO I
4.2 ANEXO II
4.3 ANEXO III
# #
# ###########################
##############################



##############################
# ###########################
# #

1. Descripción

1.1 Sobre el tuto

Me gustaría haber hecho el tuto con más tranquilidad pero como no tengo mucho tiempo y tb tengo que aprender como funciona tuve que ser algo escueto. Dar las gracias por la ayuda a Neopeek, midnight y Green_day, ops! quiero decir Great_day

Este tuto se basa en la recopilación de varias páginas web pero la fuente principal es la Wiki de XDAndroid. También es válido para compilar una ROM para cualquier dispositivo como por ejemplo un Samsung modificando ciertos pasos en el tuto.

El hilo donde empecé es el siguiente: Hilo


2. Requisitos
Es necesario tener instalada cualquier distribución de linux, en particular yo uso Ubuntu.

2.1 Archivos necesarios



3. Instalación


3.1 Pre-instalación


Necesitas descargar ciertas herramientas así que abre el terminal y sigue los pasos.
Nota: El símbolo '$' no se copia.
  1. Instala las herramientas.

    Código:
    $ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils
  2. Ahora debes instalar Java.

    Para compilar Froyo necesitas Java5 y para compilar Gingerbread necesitas Java6, nosotros vamos a compilar Froyo pero puedes tener instaladas las dos versiones de Java en la maquina y luego seleccionar con cual vas a trabajar.

    - Instalar Java5: para Froyo e inferiores.
    Abre el archivo source.list con el editor de texto:

    Código:
    $ sudo gedit /etc/apt/sources.list
    Añade el repositorio para Java5 al final y guarda:


    Código:
    deb http://mirror.pnl.gov/ubuntu/ hardy main multiverse

    Sincroniza las fuentes, ejecuta:

    Código:
    $ sudo apt-get update

    Instala el paquete, ejecuta:

    Código:
    $ sudo apt-get install sun-java5-jdk

    - Instalar Java6 jdk: para Gingerbread y superiores.
    Código:
    sudo apt-get install sun-java6-jdk
  3. Si llegas a instalar las dos versiones de Java puedes escoger cual usar, ejecuta:
    Código:
    $ sudo update-alternatives --config java
    Aparecerá lo siguiente para escoger:

    Código:
    euki@Mars:~$ sudo update-alternatives --config java
    [sudo] password for euki: 
    Existen 3 opcioens para la alternativa java (que provee /usr/bin/java).
    
      Selección   Ruta                                      Prioridad  Estado
    ------------------------------------------------------------
      0            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      modo automático
    * 1            /usr/lib/jvm/java-1.5.0-sun/jre/bin/java   53        modo manual
      2            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      modo manual
      3            /usr/lib/jvm/java-6-sun/jre/bin/java       63        modo manual
    
    Pulse <Intro> para mantener el valor por omisión [ * ] o pulse un número de selección:
  4. Para comprobar que versión está corriendo ejecuta:
    Código:
    $ java -version
    Resultado:

    Código:
    euki@Mars:~$ java -version
    java version "1.5.0_22"
    Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_22-b03)
    Java HotSpot(TM) Client VM (build 1.5.0_22-b03, mixed mode, sharing)



3.2 Repositorios
Esta parte es importante por es donde descargaremos las fuentes necesarias para nuestro proyecto que tanto puede ser para terminales que instalen android en la sdcard y se ejecuten con haret como HTC Diamond, Topaz, etc. o para terminales que instalen android en la NAND como los Samsung Galaxy S o cualquier HTC que tenga soporte para android.



3.2.1 Instalar Repo

En esta parte vamos a descargar Repo que es una herramienta de gestión de repositorios que recopila varios repositorios Git para hacer más fácil trabajar con las fuentes de Android. Resumiendo, es un script ejecutable que descarga varios archivos desde múltiples repositorios a nuestro ordenador.

Con repo usaremos el argumento 'init' que crea un directorio ./repo en el directorio actual (donde lo ejecutes) y contiene los repositorios Git para el código fuente de android, la opción '-u' para especificar la URL desde la que descargará el archivo manifest.xml con los repositorios junto con la opción '-b' para especificar que revisión (branch) vamos a compilar. Luego usaremos el argumento 'sync' para descargar las fuentes desde los repositorios que más adelante tb usaremos para actualizar las fuentes cada vez que las modifiquen en los repositorios de xdandroid o cualquier otro repositorio.

Como vamos a compilar android para terminales que usen Haret descargaremos los repositorios necesarios de XDAndroid que se encuentran alojados en https://gitorious.org/xdandroid cuya dirección URL sería git://gitorious.org/xdandroid/manifest.git y especificaremos para que revisión en este caso froyo.

Si queremos compilar, por ejemplo CyanogenMod para otros terminales (NAND), necesitaríamos descargar las fuentes (repositorios) desde https://github.com/CyanogenMod, con lo cual la dirección URL sería git://github.com/CyanogenMod/android.git y la revisión que queramos o tenga disponible (Froyo, Gingerbread, master, etc.).

Esto lo explico con más detalle en el ANEXO I.

Comenzamos. Los pasos son los siguientes:
  1. Crea una carpeta bin en tu directorio personal y lo incluyes en el path, ejecuta:

    Código:
    $ sudo mkdir ~/bin
    $ PATH=~/bin:$PATH
  2. Descarga el script Repo y hazlo ejecutable:

    Código:
    $ curl http://android-git.devnull.name/gh/repo >~/bin/repo
    $ chmod +x ~/bin/repo
    Nota: Normalmente se usa la dirección http://android.git.kernel.org/repo pero como está caído usaremos en su lugar http://android-git.devnull.name/gh/repo.

  3. Crea un directorio donde se instalará ./repo y usaremos para compilar nuestro proyecto, ejecuta:

    Código:
    $ mkdir ~/xdandroid
    Entra en el directorio:

    Código:
    $ cd ~/xdandroid
  4. Crea la carpeta ./repo y descarga los enlaces a los repositorios, ejecuta:

    Código:
    $ repo init -u git://gitorious.org/xdandroid/manifest.git -b froyo
    Nos pedirá por un nombre de usuario y una cuenta de correo:

    Código:
    euki@Mars:~/xdandroid$ repo init -u git://gitorious.org/xdandroid/manifest.git -b froyo
    
    Your Name: 
    Your Email: 
    
    Your identity is: euki <[email protected]>
    is this correct [y/n]? y
    
    repo initialized in /home/euki/xdandroid

3.2.2 Descargar los repositorios
Para descargar los repositorios al directorio del proyecto usaremos la utilidad repo con el argumento 'sync' pero antes necesitamos editar el archivo default.xml que se encuentra en el directorio xdandroid./repo/manifests

Hacemos esto porque las fuentes descargan por defecto de git://android.git.kernel.org/ y como está caído darían error al intentar descargarlos y una solución temporal es sustituír la URL por otro mirror que tenga las fuentes. Tb eliminaremos una línea en el mismo archivo que hace referencia a un paquete llamado 'superuser' y que ahora se encuentra en /extras/su

Pasos a seguir:
  1. Cambiar la URL: Entra en el directorio del proyecto (xdandroid) y pulsa ctrl + h para ver los archivos ocultos.

    Abre con el editor de textos el archivo default.xml que se encuentra en ./repo/manifests/ y sustituye lo siguiente:

    Código:
    <manifest>
      <remote  name="korg"
               fetch="git://android.git.kernel.org/"
               review="review.source.android.com" />
      <default revision="froyo" <------- Esto parte la incluyo pero no cambia aunque ponga gingerbread
               remote="korg" />
    Por:

    Código:
    <manifest>
      <remote  name="omapzoom"
               fetch="git://git.omapzoom.org"
               review="git://git.omapzoom.org" />
      <default revision="froyo"    
               remote="omapzoom" />
  2. Busca la siguiente línea y elimínala:

    Código:
    <project path="packages/apps/Superuser" name="ChainsDD/Superuser" remote="github" revision="master" />
    Podemos incluir repositorios manualmente editando el archivo default.xml pero lo más normal es añadirlos con el comando "git clone". Por ejemplo después de borrar ese repositorio directamente en el archivo default.xml podemos incluirlo más adelante ejecutando el siguiente comando en el terminal:

    Código:
    git clone git://github.com/ChainDD/superuser.git -b master
    No ponemos "-b froyo" porque ese repositorio no tiene para la revisión froyo, sólo para la otras versiones como la master. Esto es fácil pero lo explicaré con más detalle en el ANEXO I.

  3. Ahora descarga los repositorios (Recuerda que debes estar en el directorio xdandroid), ejecuta:


    Código:
    $ repo sync
    Nota: Ahora empezarán a descargar las fuentes desde los repositorios al directorio xdandroid y puede que tarden varias horas así que ten paciencia y tómate unas birras con los colegas

  4. Si queremos eliminar las fuentes descargadas de los repositorios para volver a descargarlas otra vez o descargar otras nuevas desde otros repositorios, ejecutamos dentro del directorio /xdandroid:

    Código:
    $ rm -rf `ls -a | grep -v "^\." `
    Nota: Esto eliminará todos los directorios que se encuentren en nuestro proyecto (dentro de /xdandroid) menos el directorio ./repo que seguirá intacto.

3.3 Compilando

Una vez descargados los repositorios casi podrías empezar a compilar la primera rom sin apenas modificaciones con los siguientes pasos; pero antes sería recomendable leerse el ANEXO II para entender un poco mejor la estructura de los archivos de configuración que se usan para compilar y editar uno mismo los parámetros.

3.3.1 Preparando los archivos propietarios y librerías

Como archivos propietarios se puede usar cualquier rom compatible, por ejemplo Neofroyo o Fagyifroyo pero esto lo explicaré más abajo ahora vamos a usar el que viene en la Wiki de XDAndroid.
  1. Copia los archivos signed-dream_devphone_userdebug-ota-14721.zip, hw3d-20110311.zip y liboemcamera.zip al directorio raiz del proyecto (xdandroid/)

  2. Entra en el directorio device/xdandroid/msm y ejecuta:

    Código:
    $ cd device/xdandroid/msm
    $ ./unzip-files.sh
    Si quieres que la rom compile con las GAPPS incluídas, ejecuta:

    Código:
    $ ./unzip-files.sh -g

Si queremos usar otros archivos propietarios o que descargue cualquier otra versión de GAPPS hay que editar el archivo unzip-files.sh y editamos lo siguiente:

Código:
ZIP=signed-dream_devphone_userdebug-ota-14721.zip  
GAPPSZIP=gapps-mdpi-20110501-signed.zip
GAPPSMIRROR="http://goo-inside.me/gapps"
HW3DZIP=hw3d-20110311.zip
LIBOEMCAMERAZIP=liboemcamera.zip
Cambiamos ZIP por la rom que queramos y para las GAPPS entramos en la web http://goo-inside.me/gapps y buscamos el nombre del archivo zip que queramos que descargue y lo escribimos en GAPPSZIP, por ejemplo:

Código:
ZIP=FagyiFroyoFull.zip  
GAPPSZIP=gapps-mdpi-20110501-signed.zip  <-- utilizamos las mismas porque son para froyo, si fuesen para gingerbread las cambiaríamos.
GAPPSMIRROR="http://goo-inside.me/gapps"
HW3DZIP=hw3d-20110311.zip
LIBOEMCAMERAZIP=liboemcamera.zip

3.3.2 Comenzando a compilar
Llegado a este punto es importante leerse antes el ANEXO III aunque puedes continuar de todas formas para comprobar que compila. Para compilar usaremos el argumento "-j" y la opción "otapackage".

Con el argumento "-j" indicaremos cuantos núcleos tiene nuestro procesador con la diferencia de que si nuestro procesador tiene 4 núcleos pondremos un número más al número de núcleos que tiene nuestro procesador, así que pondremos en este caso "-j5".

Con la opción "otapackage" haremos que nos cree un archivo zip de la rom para instalar desde el recovery que será el que usaremos para instalar en nuestros terminales.

Crearemos un archivo "buildspec.mk" en el directorio raiz para indicarle que tipo de producto queremos, en nuestro caso "full_msm"
  1. Crea el archivo buildspec.mk en el directorio raiz del proyecto (xdandroid/), añade estas líneas y guardalo:

    Código:
    # Configure for an XDAndroid release engineering target.
    TARGET_PRODUCT := full_msm
    TARGET_BUILD_VARIANT := eng
    TARGET_BUILD_TYPE := release
  2. Comprueba que estás en el directorio raiz del proyecto (xdandroid/) y ejecuta para compilar:

    Código:
    $ make -j5 otapackage  <---- cambia el 5 por el valor que corresponda en tu caso

    Nota: Este proceso tarda varias horas así que vete de fiesta con los colegas

  3. Cuando termine de compilar tendremos nuestra rom en la carpeta out/target/product/msm sólo falta sustituir la carpeta META-INF por otra, por ejemplo por la de la NeoFROYO y a instalar!
3.4 Volver a compilar
Para volver a compilar se necesita eliminar la anterior compilación con lo cual habrá que ejecutar el siguiente comando cada vez volvamos a compilar:

Código:
$ make clobber
Nota: Este comando eliminará la carpeta out/ de nuestro proyecto

4. ANEXOS

En construcción..
4.1 ANEXO I



4.2 ANEXO II



4.3 ANEXO III



Última edición por euki Día 03/11/11 a las 23:39:46.
Responder Con Cita
Los siguientes 3 usuarios han agradecido a euki su comentario:
[ Mostrar/Ocultar listado de agradecimientos ]