Entrada fija

viernes, 28 de agosto de 2015

Local Manifest Genéricos

Muy buenas a todos! En esta entrada haré algo que espero que os ayude mucho. Voy a ir haciendo archivos local_manifest genéricos, con los repositorios comunes para distintos dispositivos, mayoritariamente Samsung. Con eso no se asegura que para tu dispositivo sea exactamente igual por coincidir el chipset, pero en la mayoría de los casos sí.

Antes que nada, explicaré más detalladamente el funcionamiento de este archivo.


1. Funcionamiento de Local Manifest


Si queremos cambiar la lista del manifest.xml, podemos editar el default.xml directamente. Sin embargo, esto haría que la copia local del manifest haga conflicto con la versión oficial en github. Esto podría crear problemas cuando actualicemos el manifest oficial, ya que entra en conflicto con los cambios.
Por ello, no pienses en editar el "default.xml" (Aunque a veces lo hagamos pero para otra cosa, como en OmniRom, para añadir la cuenta del developer de GitHub).

Aquí es donde el local manifest entra en juego.

Crearde un local manifest nos permite personalizar la lista de repositorios utilizados en nuestra copia del código fuente, reemplazando o complementando el manifest por defecto. De esta manera, se puede agregar, quitar o cambiar el código fuente en el manifest oficial con el nuestro propio. Al incluir los repositorios (que ni siquiera tiene por qué residir en GitHub) en un local manifest, podemos sincronizar con el comando "repo sync" del mismo modo que teníamos previamente. Sólo que ahora, tanto los repositorios oficiales del manifest por defecto y los repositorios adicionales que especifiquemos serán comprobados para las actualizaciones.
Por ello, "Local_Manifest" es algo fundamental para los desarrolladores.

Si usamos Local Manifest, se sincronizarán las sources del dispositivo cada vez que ejecutemos el comando para sincronizar repositorio de CyanogenMod (repo sync), por lo que se sobreescribirán los archivos de nuestro dispositivo, pero tranquilo, no desaparecen.

De forma muy resumida, Local Manifest es un archivo cuya función es sincronizar proyectos en la carpeta de trabajo local.


2. Usos del Local Manifest

Ahora pasaré a explicar todo lo que puedes hacer con el local manifest, aunque muchas de esas cosas no las usaremos para compilar ROMs, pero el saber no ocupa lugar de más. ;-)

Para añadir repositorios locales, lo primero que haremos será crear el archivo. Aunque lo he explicado en las entradas de compilación, lo explicaré todo en este post. Para crear el archivo, ejecutamos en Terminal:

                                        

Una vez situados el el directorio, crearemos el archivo.

                                        
*También podéis crear el archivo usando el explorador de archivos y editarlo con gedit*

Ahora añadiremos el contenido que queramos sincronizar localmente. Una vez completados los cambios, presiona "Ctrl+o" y pulsa "Enter" para guardar los cambios. Para salir del editor presiona "Ctrl+x".

La estructura por defecto del Local Manifest es así:




Así sería el formato para añadir repositorios/proyectos. La terminología es la siguiente:

- path (directorio): ruta local donde estará el repo
- name (repo): enlace del repositorio quitando "https://github.com/"
- remote (web): en el 99% de los casos hay que poner github
- revision (branch): la marca a usar de dicho repositorio (cm-11.0, android-5.0, etc)

Pues así sería para añadir un proyecto, y crearíamos una línea por cada proyecto a añadir. Éste sería un ejemplo de un local_manifest para añadir repositorios.

Sin embargo, se pueden hacer más cosas a parte de añadir proyectos. Podríamos encontrarnos con uno así:

 

Explico cuál es la función de cada cosa. Antes que nada, aprovecho y explico también qué significa la primera línea de todas.

<?xml version="1.0" encoding="UTF-8"?>

Esta línea es una declaración estándar de XML, diciendo que es un archivo de lenguaje extensible. Una vez establecido, las etiquetas <manifest> y </manifest> encierran el contenido que será reconocido por el comando repo.


<remove-project name="CyanogenMod/android_hardware_qcom_fm" />

Esta línea se encarga de eliminar un proyecto (el hardware de fm en este caso) que se encuentre declarado en el default manifest. Esto nos sirve por si hay proyectos en el manifest por defecto que no queremos que se descarguen ya que no serán necesarios, por lo que ahorraremos tiempo de descarga y espacio de disco. Una vez ejecutemos "repo sync", el repositorio eliminado no estará disponible en el source tree que hayamos sincronizado.


<project path="hardware/qcom/fm" name="aogp/hardware/qcom/fm" remote="github"

Como expliqué antes, esta línea añade un proyecto, y debe constar de las cuatro partes que expliqué. Sin embargo, "revision" es opcional, ya que si no especificamos la branch a descargar (o el repositorio solo tiene una), se sincronizará la que esté por defecto (o la única disponible).

Y esto sería toda la explicación sobre este archivo. Ahora pasaremos a lo más interesante.



3. Local Manifest Genéricos

Bueno, aquí iré añadiendo local manifest genéricos que os serán útiles si tu dispositivo no tiene soporte oficial de CyanogenMod.
Los que publicaré serán para CyanogenMod 11, ya que es la ROM que el 99% de desarrollador compilan primero para dispositivos no soportados, ya que es muy fácil usarla de base para portar otras ROMs.
Si vas a compilar otra versión de CyanogenMod, vete al repositorio y comprueba que esté disponible la versión de android (branch) que vayas a trabajar.

Samsung Qcom MSM-8930

El local manifest si tu dispositivo es un Samsung Qualcomm MSM-8930 será así. Recuerda que debes cambiar la líneas que son específicas para cada dispositivo (las dos últimas en este caso). 
Todos los archivos estarán en mi cuenta de PasteBin, así los podréis copiar o descargar fácilmente.



Samsung Bcm 21553

El local manifest si tu dispositivo es una Samsung Broadcom 21553 será así. Recuerda que debes cambiar la líneas que son específicas para cada dispositivo (la penúltima en este caso). 
Todos los archivos estarán en mi cuenta de PasteBin, así los podréis copiar o descargar fácilmente.


1 comentario:

  1. hola muy buenas me podrias ayudar a acrear mi local manifest no lo acabo de entender mi dispositivo es un xiaomi mi max 2 y el codigo fuente del kernel esta aqui

    https://github.com/MiCode/Xiaomi_Kernel_OpenSource/tree/oxygen-n-oss

    me podrian hechar una mano tengo descargada toda las sources de aosp pero quiero agregar mi kernel sources para poner compilar con este

    ResponderEliminar