Entrada fija

martes, 29 de septiembre de 2015

Portar MIUI v6 desde ROM

¡Hola a todos! Hoy trabajaremos también con MIUI, sin embargo, no la vamos a compilar, sino que esta vez la "portaremos". La diferencia entre las dos es bastante sencilla:
  • Portar una ROM es adaptar una ya creada para otro dispositivo al nuestro. Por ello, no usaremos "source code" ni nada parecido. 
  • Compilar una ROM es construir dicha ROM para tu dispositivo a través del código fuente (source code) oficial del equipo de la ROM que vayamos a trabajar.
Decir que por todo esto, resulta mucho más fácil portar ROMs. Sin embargo, y más en las nuevas versiones Android, no siempre funciona; la mayoría de veces nos quedaremos en la animación de inicio infinitamente.
En mi opinión personal es mucho mejor compilar, ya que es todo más limpio y oficial. Al compilar cogemos archivos de una ROM para otro dispositivo y los adherimos a una ROM del nuestro, así que no queda igual. 
Sin embargo, este proceso es útil si no lograste compilar, justo lo que me pasó a mí con MIUI, que se quedaba con bootloop al compilar con PatchROM, y con este método funcionó bien.

Dicho todo esto, comencemos:

*Este tutorial es aplicable a cualquier versión de MIUI*
*Puedes usar tanto Windows como Linux para este tutorial*


Pre-requisitos:

- MIUI v6 para un dispositivo que tenga un chipset igual al tuyo.
- ROM 4.4.4 funcional en nuestro dispositivo.
- Android Image Kitchen
- Editor de texto avanzado (Recomiendo Notepad++)

*La versión de MIUI  y la ROM funcional en tu dispositivo deben tener la misma versión de Android*

*Ambas ROMs deben ser zip flasheables por custom recovery*


1. Preparar Entorno de Trabajo

Lo primero que haremos será crear y organizar el directorio donde vamos a trabajar. Para ello, creamos una carpeta llamada "miui" en la ruta que prefieras.

Hecho esto, ahora dentro de dicha carpeta crearemos cuatro carpetas más:

- "PORT" (Aquí irá la MIUI a portar)

- "BASE" (Aquí irá la ROM de nuestro dispositivo)

- KitchenPORT (Android Image Kitchen para el boot.img (kernel) de PORT)

- KitchenBASE (Android Image Kitchen para el boot.img de BASE)

Una vez creadas estas carpetas, ya tendremos todo organizado para empezar a portar.



2. Extraer Archivos

En este paso extraeremos los archivos de cada cosa que vayamos a utilizar.

Primero de todo, extraemos el Zip de MIUI en la carpeta PORT. Por lo tanto la estructura de directorio nos quedará algo así:

Hacemos lo mismo con la ROM de nuestro dispositivo en BASE. Quedaría algo así:


Ahora haremos lo propio con "Android Image Kitchen". Debemos descargarla y extraer su contenido en la carpeta KitchenPORT y KitchenBASE. Ambos directorios quedarán iguales y se verán así:



Una vez terminado, ya habremos extraído los archivos que utilizaremos en sus carpetas correspondientes.


3. Intercambiar Archivos

Es el momento del paso final, en el que realmente haremos lo "complicado". Lo que haremos será básicamente intercambiar archivos y carpetas entre la ROM base y la ROM a portar.

Carpetas

Primero de todo, entramos en la carpeta miui/BASE/system y eliminamos las siguientes carpetas:

  • app
  • fonts
  • framework
  • media
  • priv-app (si existe)

Luego copiamos dichas carpetas que hemos eliminado desde miui/PORT/system. Es decir, copiamos y pegamos esas 5 carpetas desde PORT hasta BASE.


Ahora borramos todo el contenido de la carpeta BASE/system/etc/permissions excepto: 
  • platform.xml  
  • handheld_core_hardware.xml 
Y como hicimos antes, intercambiamos lo borrado. Es decir, copiamos todo lo que contenga PORT/system/etc/permissions  excepto los dos archivos que no borramos antes y lo pegamos en BASE/system/etc/permissions.


Lo siguiente que haremos es copiar desde PORT/system la carpeta "lib" y la pegamos en BASE/system. Nos preguntará si queremos reemplazar las carpetas, y le decimos que "NO", por lo cual, se combinarán los archivos de ambas carpetas. Repetimos el proceso con las carpetas:
  • bin 
  • etc 
  • xbin

Hecho esto, vamos al directorio PORT/system/lib y copiamos estos tres archivos:
  • libandroid_runtime.so
  • libandroid_servers.so
  • libmedia_jni.so 
Y los pegamos en BASE/system/lib, y ahora "SÍ" los reemplazamos.


Kernel


Ahora trabajaremos con el kernel. Copiamos los boot.img contenidos en PORT y BASE, y los pegamos en KitchenPORT y KitchenBASE respectivamente.


Arrastramos el archivo boot.img sobre el archivo "unpackimg". Se abrirá una ventana de comandos, y nos extraerá el contenido del kernel. Hacemos este proceso con cada kernel en su respectiva carpeta.

Una vez terminado, veremos que ha extraído una carpeta llamada "ramdisk".
Ahora copiamos el archivo KitchenPORT/ramdisk/init.environ.rc a KitchenBASE/ramdisk y le decimos que "SÍ" reemplazamos.

Ahora nos situamos en KitchenBASE, y ejecutamos el archivo "repackimg" (doble click). Una vez terminado el proceso, veremos un nuevo archivo llamado "image-new.img": este será el kernel modificado que usaremos.
Para añadir dicho kernel, lo pegamos en la carpeta BASE (la que contiene la ROM extraída). Borramos el boot.img anterior, y le cambiamos el nombre de image-new.img a boot.img. 

Así, ya tendremos reemplazado el kernel.



Build.prop

Y llegamos paso más sencillo. 

Lo que haremos será abrir el archivo BASE/system/build.prop con Notepad++ y borramos todo lo que aparezca debajo de la siguiente línea (dicha no inclusive):



Ahora abrimos el "build.prop" de PORT//system/ también con Notepad. Copiamos lo que salga debajo de la línea nombrada anteriormente, y como hemos estado haciendo, intercambiamos. Es decir, pegamos todas las líneas en el "build.prop" de BASE/system.


Updater-Script

Este es el último paso.

Lo que haremos será abrir el archivo BASE/META-INF/com/google/android/updater-script con Notepad.
Abrimos el mismo archivo, pero el del directorio PORT/META-INF/com/google/android/.

Una vez abiertos los dos, intercambiamos líneas. Reemplazamos las líneas que digan lo siguiente:

  • Set_perm (también pueden aparecer como set_metadata)
  • Symlink
Es decir, quitamos esas líneas del updater-script BASE y pegamos las de PORT. Al terminar guardamos los cambios y cerramos.

Por último seleccionamos todo el contenido de la carpeta BASE y lo comprimimos en un archivo zip



¡Listo! Has Portado MIUI Para Tu Dispositivo


3 comentarios: