Entrada fija

lunes, 12 de octubre de 2015

Portar FIUI v2 desde ROM

¡Buenas a todos! Hoy aprenderemos a portar FIUI, una ROM china que está teniendo mucho auge gracias a su cómoda y vistosa interfaz. Sus creadores la definen como "Future Interactive UI (FIUI)".
Como ya expliqué la diferencia entre portar y compilar en el post para portar MIUI, pues no hace falta que lo vuelva a hacer.

Decir que esta ROM no ha liberado ningún tipo de código fuente, por lo que esta es la única manera de adaptar esta ROM a tu dispositivo. Sin embargo, es bastante sencillo portarla, ya que absolutamente todas las ROMs FIUI están basadas en CM11, aplicando solo ligeros cambios en la interfaz. Por ello, hay un 99% de probabilidades de que consigas un port satisfactorio con mi método.

Dicho esto, comencemos con el tutorial:

*Este tutorial es aplicable a cualquier dispositivo y versión de FIUI*


1. Conceptos Básicos:

Vamos a empezar teniendo claro lo que necesitamos saber y tener para portar esta ROM.





Y antes de nada, hay que tener claros los siguientes conceptos:






Una vez que tengamos esto claro, prosigamos con el tutorial.


2. Preparar Entorno:

Ahora es momento de crear y organizar el directorio donde vamos a trabajar. Para ello, creamos una carpeta llamada "fiui" en la ruta que prefieras. A continuación, creamos dos subcarpetas:


  • CM11: Aquí irá la ROM funcional en nuestro dispositivo, que solo podrá ser CM11.
  • FIUI: Aquí irá cualquier FIUI de otro dispositivo.

Ahora cogemos cada ROM y extraemos su contenido en su carpeta correspondiente.

Hecho esto, estarás listo para empezar el port.


3. Portando la ROM:

Ahora será el único paso "complicado" del proceso. Básicamente lo que haremos será copiar y pegar archivos y carpetas. Sin embargo, debes prestar mucha atención en cada paso.


---------------------------------------------------------------------------------------------------------
Primero de todo, borramos las siguientes carpetas de CM11:
  • system/app
  • system/media
  • system/priv-app

Y las reemplazamos por las carpetas de FIUI. Es decir, copia esas 3 carpetas desde FIUI a CM11.

---------------------------------------------------------------------------------------------------------

A continuación, dentro de FIUI nos dirigimos a system/etc/permissions y buscamos un archivo llamado com.htc.software.market.xml. Si aparece, lo copiamos en la carpeta system/etc/permissions de CM11. 

Hacemos el mismo proceso con el archivo libAppDataSearch.so, que debe estar localizado en system/lib.

Recuerda: si esos dos archivos no están, no importa. Continúa con el tutorial.

---------------------------------------------------------------------------------------------------------

Ahora copia el archivo "su" desde FIUI hasta CM11. Este archivo se encuentra en la ruta system/xbin, y recuerda, lo pegamos en la misma ruta, pero de CM11.

---------------------------------------------------------------------------------------------------------

En CM11 y FIUI, abrimos el archivo framework-res.apk con WinRAR. Nos desplazamos hasta la carpeta res/xml.

Seguidamente, mueve estos archivos directamente desde el framework-res.apk de CM11 hasta el framework-res.apk de FIUI:
  • eri.xml
  • storage_list.xml
  • apn.xml
  • power-profile.xml

Una vez hecho esto, copiamos la carpeta system/framework desde FIUI hasta CM11. Elegimos la opción de combinar carpetas, y reemplazamos cada vez que lo pregunte.

---------------------------------------------------------------------------------------------------------

Por último, abrimos el archivo build.prop de CM11 con Notepad++ y pegamos el siguiente código al final:

                                       

Y reemplazamos los valores correspondientes dependiendo de la versión de FIUI que estemos portando.

Una vez hecho, guarda los cambios. Ya has terminado todo el trabajo.


5. Re-empaquetar ROM:

Lo único que falta en ir a la carpeta CM11, seleccionar todas las carpetas y archivos que veamos, y comprimirlas en formato zip.
Una vez finalizado el proceso, ya estará lista para ser instalada en tu dispositivo.




¡Listo! Has Portado FIUI para tu Dispositivo

domingo, 11 de octubre de 2015

Compilar AOSPA 4.4 desde Source

Muy buenas a todos! Hoy aprenderemos a compilar AOSPA, también conocida como ParanoidAndroid. Se caracteriza por incluir numerosas funciones exclusivas de personalización, así como ligeras modificaciones en la interfaz.
Para compilarla necesitaréis varias cosas previas que ya haya hecho un desarrollador, ya que incluso yo no sé hacerlas todavía. En cuanto aprenda, lo publicaré y añadiré enlace para redireccionaros a la publicación y luego seguiréis con este tutorial.
Vayamos al lío:


Pre-requisitos:

* Device Tree de CM11 para tu dispositivo (Buscad en GitHub)
* Local_Manifest para tu dispositivo (recomendado)
Entorno de Compilación Configurado


El device tree es lo más importante. Es lo necesario para que compile con los archivos y características de tu dispositivo para que la ROM sea compatible. Necesitas que algún desarrollador experto lo haga. Yo estoy aprendiendo y en cuanto pueda lo compartiré. El device tree se compone principalmente de tres partes: Device, Kernel y Vendor. Aquí tenéis un ejemplo de device tree (solo device) y como veis son varios archivos y carpetas. Fijaos arriba a la izquierda donde pone "branch" y es una pestaña deslizable. Debéis aseguraros de que vuestro device tree tiene cm-11.0 en esa pestaña.
Dicho esto, prosigamos:


1. Crear Directorio de Trabajo:

El primer paso será crear la carpeta en la que tendremos todo los archivos y en la que se trabajará. La podéis llamar como queráis, pero yo recomiendo llamarla por el nombre de la ROM que vayamos a compilar. Para crear la carpeta hacemos lo siguiente con Terminal:

                                            
                           

Ahora se habrá creado una carpeta en el directorio Home. La podéis ver si abrís el explorador de archivos. Ahora, vamos a situarnos en esa carpeta con Terminal. Para ello:

                                                                                    
Con esto ya habremos creado la carpeta de trabajo y nos habremos situado en ella en Terminal.


2. Descargas las Sources:

En este paso inicializaremos los archivos de código abierto de la ROM que vayamos a compilar, en este caso AOSPA 4.4, y las sincronizaremos a nuestra carpeta de trabajo. Para este paso es necesario el binario repo que ya instalamos al inicializar el entorno de trabajo.
Estando situados en la carpeta "aospa", ejecutamos el siguiente comando:

                          

Puede que el terminal os dé algún error y os pida ejecutar algún comando para instalar archivos necesarios. En ese caso, copia lo que te diga el Terminal que ejecutes, y cuando termine vuelve a ejecutar el comando de arriba.

Si todo ha ido bien, se iniciará tu repositorio local usando las sources de AOSPA. Para asegurarse de que se ha descargado, vete a la carpeta "aospa" con el explorador de archivos, y pulsa Ctrl+h y deberá aparecer una carpeta llamada ".repo"

Al finalizar la descarga, Terminal dirá que tienes que registrarte con una cuenta de GitHub. Id a su página oficial y os creáis una cuenta. Una vez creada y comprobada por correo, volver a Terminal y ejecutáis estos dos comandos por separado:

                                 

*Reemplaza "tu@correo.com" y "Tu Nombre" por los que hayas usado al crear la cuenta. Ojo, sin las comillas pero con el espacio después de "user.email" y "user.name" respectivamente*

Una vez registrado recomiendo ejecutar otra vez el comando de descarga de sources y veréis que os aparecerá que estáis identificados al terminar el proceso. Por otro lado, cuando el Terminal os pida si queréis visualización de colores en vuestra cuenta (Enable colour display) escribe una N y le dais a enter.

Hecho esto ya tendremos nuestra carpeta de trabajo lista para obtener las sources de la ROM con la que vamos a trabajar.


3. Sincronizar Repositorio:

Este es el paso más pesado para todo el mundo, ya que descargaremos las sources y pesa entre 10-15GB aproximadamente. Es muy recomendado tener una velocidad de Internet elevada si no quieres morir de aburrimiento. En caso de que quieras aburrirte, ejecuta lo siguiente en Terminal:

*Atención, debemos estar situados en la carpeta aospa. Si has seguido los pasos tal cual sin cerrar el Terminal, estarás situado en ella (lo veréis donde dice ~/aospa~$ al principio de la línea). Si no, sitúate ejecutando "cd && cd aospa".*

                                               


El # indica el número de trabajos que se usarán para descargar los archivos. Depende de tu velocidad de Internet cuánto ponerle. Yo recomiendo usar de 2 a 4. Por lo tanto, si usas dos el comando quedaría así: repo sync -j2

Tras ejecutar el comando empezará la descarga, y llevará unas cuantas horas, así que podéis ir a tomaros algo o salir a caminar, que es saludable. Cuando termine la sincronización, ya tendremos las sources en nuestra carpeta de trabajo.


4. Configurar Tu Dispositivo:

En este paso es quizá el más complicado ya que no solo será ejecutar comandos en Terminal, sino que tendréis que editar y escribir líneas en varios archivos. Sin embargo, si sigues bien el tutorial te resultará bastante sencillo.

Como dije al principio, es necesario tener localizado el device, kernel y vendor de nuestro dispositivo. En este paso lo que haremos en añadir un archivo a la carpeta de trabajo para que sincronice y descargue las sources específicas de nuestro dispositivo.

Tomaré de ejemplo mi actual dispositivo, el Galaxy Ace 3. Aquí tenéis enlaces de GitHub para que veáis con qué nombre suelen estar:

- Device: https://github.com/kostoulhs/android_device_samsung_loganreltexx
- Kernel: https://github.com/kostoulhs/android_kernel_samsung_loganreltexx
- Vendor: https://github.com/kostoulhs/proprietary_vendor_samsung_loganreltexx


Ahora que tenemos localizados los tres enlaces, vamos a sincronizarlos con nuestra carpeta. Para ello, usaremos el Local Manifest.

Atención: Seguramente si ya hay un desarrollador que ha hecho un Device Tree para CyanogenMod 11, ya haya hecho un local_manifest. Lo encontraréis en su página de GitHub y tendrá un aspecto como éste. En este caso, primero seleccionamos la branch con la que estamos trabajando en la pestaña. La página recargará, entonces clicamos en "local_manifest.xml" y veréis las líneas que tendréis que poner (copiar y pegar) cuando creéis el local manifest.

No me paro a explicar esto de nuevo, ya que lo tenéis explicado en este tutorial específico, además de en tutoriales anteriores sobre ROMs desde source.

Una vez finalizado de escribir el Local Manifest, presiona Ctrol+O y enter para guardar. Luego Ctrl+x para salir del editor. Revisa que el archivo esté en cm11/.repo/local_manifest y que se haya guardado correctamente.

Después de todo esto, ejecuta el comando "repo sync" de nuevo. Tranquilo, no tardará tanto como la primera vez, ya que solo descargará los repo que añadimos en el local manifest.


5. Editar La Source:

En este paso modificaremos y añadiremos diversos archivos a la source, para añadir soporte a nuestro dispositivo. Esto es necesario para cualquier ROM que queramos compilar y que la estemos basando en CyanogenMod. En este tutorial saldrá específicamente para AOSPA. Primero de todo, debemos hacer:

*Atención: todos los archivos y directorios que editaremos/añadiremos están en la ruta del device tree de tu dispositivo*

*Nota: todos los "device" los sustituimos por el "codename" de tu dispositivo, a menos que especifique lo contrario*


Añadir pa.dependencies

Este archivo es igual a "omni.dependencies" que explico en el tutorial de OmniROM. 

Es bastante fácil. Este archivo se basa en el local_manifest. Si has entendido el local_manifest, te resultaŕa fácil hacer este archivo. Varía un poco, ya que aquí la terminología es:

- remote: cuenta de github (CyanogenMod, onmirom, etc)
- repository: enlace del repo quitando "https://github.com/" y el nombre de la cuenta.
- target_path: ruta local del repo. La misma que ponga el local_manifest
- revision: igual que el local_manifest

El ejemplo de estructura que sigue es así:

                    

Por tanto, hay que crear un archivo vacío con el nombre "pa.dependencies". Luego debéis añadir todos los repos de vuestro local manifest siguiendo el formato del ejemplo.

Seguramente, tu device tree venga con el archivo "cm.dependencies". En tal caso, debes borrarlo y crear el archivo desde 0, ya que no viene con la misma estructura.
Al terminar guardamos y cerramos.


Añadir AndroidProducts.mk

Otro archivo que hay que crear en la misma ruta. Seguimos el mismo procedimiento (crear archivo vacío con el nombre AndroidProducts.mk) y lo abrimos con gedit.
A continuación pegamos lo siguiente:

        

Ahora para hacerlo compatible para nuestro dispositivo, haz lo siguiente:
  • full_device: lo cambias por el nombre con el que aparezca el archivo "full.mk" en la ruta de tu dispositivo. Por defecto será "full_codename.mk", pero a veces varía.
  • pa_device: como dije al principio, debemos cambiar todos los "device" por el codename de nuestro dispositivo.
Guardamos los cambios y cerramos.


Añadir pa_device.mk

Lo que debemos hacer es crear un archivo vacío y lo llamamos "pa_device.mk". Como es evidente, reemplazamos "device" por el nombre de tu dispositivo, como hemos estado haciendo siempre.
Una vez creado, pegamos el siguiente contenido:

    

Y para adaptarlo:
  • device: Como hemos venido haciendo, se reemplaza por el codename de nuestro dispositivo.
  • resolution: Reemplazamos por la resolución del dispositivo (HDPI o XHDPI)
  • manufacturer: Se reemplaza por el manufacturador (Samsung, LG, etc)
  • BUILD_FINGERPRINT: Lo que debéis escribir entre las comillas que van después de este código, lo tenéis en la línea "ro.build.fingerprint" del build.prop de tu dispositivo.
  • PRIVATE_BUILD_DESC: Lo que debéis escribir entre las comillas que van después de este código, lo tenéis en la línea "pro.build.description" del build.prop de tu dispositivo.


Editar vendorsetup.sh

En la misma ruta (aospa/device/manufacturer/codename) abrimos el archivo "vendorsetup.sh" con gedit. Nos aparecerá una línea así:
add_lunch_combo cm_device-userdebug
Simplemente cambia "cm" por "pa". Listo, guarda y sal.



6. Compilar la ROM:

Este es el ansiado paso final con el que crearemos el zip flasheable para nuestro dispositivo. Para ello ejecuta en Terminal:

                                           

                                           

*Como es evidente, también se sustituye "device" como hemos venido haciendo*

Tras ello empezará a compilar y tardará unas horas, todo depende de la potencia que tenga tu PC. Cuando termine, si todo ha ido bien, tendrás el archivo en out/target/product/device.




¡Listo! Ya has compilado AOSPA 4.4