in

Cómo construir tu propia ROM personalizada de Android

Cómo construir tu propia ROM personalizada de Android

Una de las características clave de Android es que es de código abierto. El código fuente del sistema operativo completo, incluido el kernel, la interfaz de usuario, las bibliotecas y las aplicaciones clave, está disponible de forma gratuita. Esto significa que cualquier persona (con las habilidades técnicas adecuadas) puede crear Android desde la fuente y actualizarlo en un dispositivo compatible. Esta flexibilidad ha permitido a varios grupos, algunos comerciales y otros aficionados, desarrollar distribuciones alternativas de Android. Estos se denominan comúnmente “ROM personalizados”, sin embargo, un mejor nombre sería “firmware personalizado”.

Dado que todos los bloques de construcción necesarios están disponibles, tal vez se haya preguntado qué tan difícil es construir su propia ROM personalizada, ¡su propia versión personalizada de Android! De hecho, es posible, siga leyendo para obtener más información.

Advertencia

Antes de sumergirnos en el turbio mundo de la creación de versiones personalizadas de Android, debemos hacer una pausa y evaluar la enormidad de la tarea que tenemos por delante, mientras mantenemos nuestras expectativas bajo control. Si no tiene absolutamente ninguna experiencia en codificación, cero experiencia con el uso de la línea de comandos (en Linux o macOS), o no tiene idea de qué es un “Makefile”, entonces esto no es para usted.

Android es un sistema operativo completo. Es complejo y contiene muchos subsistemas diferentes. La creación de un sistema operativo tan complejo y útil como Android no sucedió de la noche a la mañana. Esto significa que cualquier personalización que desee realizar tendrá que empezar poco a poco. Crear una distribución alternativa de Android que sea radicalmente diferente requerirá muchas, muchas horas de arduo trabajo y dedicación.

Una vez dicho esto. Si está familiarizado con la escritura de código, si sabe un poco sobre Makefiles y compiladores, entonces crear su propia versión de Android puede ser una experiencia gratificante.

Prerrequisitos

requisitos-aosp

En teoría, sería posible crear un firmware de Android personalizado para cualquier dispositivo informático capaz de ejecutar un sistema operativo moderno. Sin embargo, para hacer la vida más fácil, nos limitaremos a construir Android para dispositivos que tengan soporte “listo para usar”, es decir, dispositivos Nexus. Para mi versión de demostración utilicé un Nexus 5X.

Para construir Android, necesitará acceso (y familiaridad con) una máquina Linux o una Mac. En ambos casos, usará mucho el terminal y debe tener confianza con los comandos de shell. Hice mi primera compilación usando una máquina virtual Linux, sin embargo, no reconocería el Nexus 5X cuando estaba en modo de cargador de arranque, por lo que no pude actualizar el nuevo firmware en el dispositivo. Entonces me cambié a una Mac y funcionó sin demasiados problemas.

Necesitará 130 GB de espacio en disco y probablemente alrededor de 8 GB de RAM. Intenté construir Android con solo 4GB de RAM y encontré muchos problemas. También encontré problemas similares con 8GB de RAM, sin embargo, usando algunos trucos (ver más adelante) pude crear una compilación exitosa.

Aprenda a tener paciencia. Crear Android no es rápido. ¡Para sincronizar el repositorio de origen con mi máquina local tomó casi 24 horas! Además, una construcción completamente limpia tardará varias horas en completarse. Incluso después de realizar un cambio menor, es posible que deba esperar de 10 a 20 minutos para una compilación. Todo depende de su hardware, sin embargo, no espere tener su nueva versión de Android en funcionamiento en solo unos momentos.

La versión de Android Open Source Project de Android no incluye ningún servicio de Google. Así que faltarán cosas como Google Play, YouTube, Gmail y Chrome. Hay formas de actualizar esos “gapps” en su propio firmware personalizado, pero dejaré que descubra cómo hacerlo. Sugerencia: busque “instalar gapps”.

Donde empezar

El proceso básico es este. Descargue y compile Android desde el Proyecto de código abierto de Android, luego modifique el código fuente para obtener su propia versión personalizada. ¡Sencillo!

Google proporciona una excelente documentación sobre la creación de AOSP. Necesita leerlo y luego releerlo y luego leerlo nuevamente. No salte ningún paso y no asuma que sabe lo que dirá a continuación y pase por alto las partes.

No repetiré textualmente lo que se encuentra en las instrucciones de construcción aquí, sin embargo, los pasos generales son:

  • Configure un entorno de compilación, incluida la instalación de las herramientas de desarrollo adecuadas, el kit de desarrollo de Java y la obtención de todas las rutas y directorios correctos.
  • Toma la fuente: esto se hace usando la herramienta “Repo” y git.
  • Obtenga binarios propietarios: algunos de los controladores solo se publican en forma binaria.
  • Elija un objetivo, utilizando la herramienta “almuerzo”.
  • Inicie la compilación, utilizando “make” y Jack.
  • Actualice la compilación en su dispositivo, usando adb y fastboot.

Consejos y trucos para el proceso de construcción

Todo eso suena fácil, pero hay algunos errores en el camino. Aquí hay algunas notas que hice durante el proceso que pueden resultarle útiles:

Configurar un entorno de construcción – Ubuntu 14.04 es el entorno de compilación recomendado para usuarios de Linux y OS X 10.11 para usuarios de Mac. Necesita instalar OpenJDK 8 en Linux y Oracles JDK 8 en OS X. En OS X también necesita Macports instalado junto con Xcode y las herramientas de línea de comandos de Xcode. Usé OS X 10.12 que causó un pequeño problema con la función syscalls siendo obsoleto en 10.12 OS X SDK. La solución está aquí: http://palanceli.com/2016/09/25/2016/0925AOSPOnMac/

Agarra la fuente – Este es un paso fácil, sin embargo, lleva mucho tiempo. A mí me tomó más de 24 horas. Una descarga tan grande solo ocurre una vez, la sincronización adicional con el árbol de fuentes principal será incremental.

Obtenga binarios propietarios – Los controladores binarios deben descomprimirse en su directorio de trabajo.

aosp-lunch-captura de pantalla-16x9-720p

Elige un objetivo – Para el uso de Nexus 5X aosp_bullhead-user

Comienza la construcción – Comienzas la construcción usando hacer. GNU make puede manejar tareas paralelas con un argumento -jN, y es común usar una cantidad de tareas N que es entre 1 y 2 veces la cantidad de subprocesos de hardware en la computadora que se usa para la compilación. Sin embargo, si encuentra que su máquina tiene problemas durante el proceso de compilación, intente algo como “make -j2”.

Si obtiene errores de compilación que parecen estar relacionados con la memoria, especialmente sobre el servidor Jack y la memoria, haga estas dos cosas:

  • exportar ANDROID_JACK_VM_ARGS = ”- Xmx4g -Dfile.encoding = UTF-8 -XX: + TieredCompilation”
  • cambiar el jack.server.max-service en $ HOME / .jack-server / config.properties a 1

Si cambia alguno de los aspectos de la configuración del servidor Jack (incluida la configuración o alteración de la variable ANDROID_JACK_VM_ARGS), debe eliminar el servidor Jack y ejecutar el make nuevamente. Usar ./prebuilts/sdk/tools/jack-admin kill-server para detener el servidor Jack.

Si obtiene algún error de comunicación relacionado con el servidor Jack, simplemente comience la compilación nuevamente, eso normalmente lo soluciona.

Actualice la compilación en su dispositivo – Usted encontrará adb y fastboot en ./out/host/darwin-x86/bin/ o ./out/host/darwin-x86/bin/ para OS X o Linux respectivamente.

Flashear

aosp-hacer-terminado-16x9-720p

Una vez que tenga una compilación exitosa y la haya flasheado en su dispositivo usando “fastboot flashall -w”, reinicie su dispositivo. Lo que verá es una versión básica de AOSP. No hay servicios de Google, ni Play Store y solo unas pocas aplicaciones principales. Este es el esqueleto de Android.

Sin embargo, las felicitaciones están en orden. Ha logrado construir Android a partir de su código fuente y actualizarlo a un dispositivo. Eso no es poca cosa.

AOSP-capturas de pantalla-16x9-720p

Personalización

Ahora que tiene Android en funcionamiento, puede comenzar a personalizarlo y crear su propia ROM especializada. Aquí es donde las cosas se ponen difíciles. Estás a punto de jugar con las tripas del sistema operativo Android y el problema es que Android es enorme. Mi directorio de trabajo tiene más de 120 GB de datos. Ese es el código fuente, los gráficos, los binarios compilados, las herramientas, todo. Eso es un montón de cosas.

Entonces, comience simple. Aquí hay dos personalizaciones simples que lo ayudarán a comenzar, ¡comience en el camino para convertirse en un hacker de firmware de Android!

Personaliza la aplicación de mensajería

Una personalización relativamente fácil es cambiar una de las aplicaciones prediseñadas. Si tuviera que desarrollar una distribución de Android alternativa completa, sería un hecho modificar o reemplazar algunas de las aplicaciones principales. En este caso, solo vamos a modificarlo, sin embargo, los principios siguen siendo los mismos para cambios y revisiones más complejos.

Las aplicaciones principales se encuentran en el directorio ./packages/apps/ y estamos interesados ​​en la aplicación de mensajería en ./packages/apps/Messaging/. Profundizar src / com / android / messaging / y editar BugleApplication.java. Puede editarlo con su editor GUI favorito o si desea permanecer en la línea de comando, utilice vi o nano.

BugleApplication.java es el punto de entrada para la aplicación de mensajería. Para simplificar las cosas, lo que vamos a hacer es agregar un brindis que se mostrará cuando la aplicación se inicie por primera vez. Cerca de la parte superior del archivo, debajo de la larga lista de declaraciones de importación, agregue esta línea:

import android.widget.Toast;

Ahora busque el onCreate () función. Hacia el final de la función, antes de la llamada final a Trace.endSection (); agregue las siguientes dos líneas:

Toast myToast = Toast.makeText(getApplicationContext(), "Welcome!", Toast.LENGTH_LONG);
myToast.show();

Guarde el archivo y comience otra compilación usando el hacer mando. Una vez que la compilación haya terminado, actualícela en su dispositivo y reinicie. Inicie la aplicación de mensajería y busque el mensaje “¡Bienvenido!” tostado. Obviamente, esta es una modificación simple, sin embargo, existe la posibilidad de modificar cualquiera de las aplicaciones predeterminadas, de la manera que desee.

Mensajes-con-tostadas-resaltadas-16x9-720p

Más personalización

Cualquier distribución de Android personalizada que se precie debe incluir cierta información sobre la propia ROM. Para hacer esto, podemos modificar la aplicación de configuración incorporada y agregar información a la sección Acerca del teléfono. Para hacer esto, edite el archivo device_info_settings.xml desde ./packages/apps/Settings/res/xml/ y agregue las siguientes dos secciones al final del archivo antes de la etiqueta:

<!-- ROM name -->
<Preference android:key="rom_name"
android:enabled="false"
android:shouldDisableView="false"
android:title="ROM name"
android:summary="Whizz Bang Pop ROM"/>

<!-- ROM build version -->
<Preference android:key="rom_number"
android:enabled="false"
android:shouldDisableView="false"
android:title="ROM build number"
android:summary="7.0.1"/>

Guarde el archivo y luego reconstruya y vuelva a actualizar el firmware en su dispositivo. Una vez que reinicie, vaya a Configuración-> Acerca del teléfono y desplácese hasta la parte inferior:

Configuración-con-detalles-ROM-resaltados-16x9-720p

La alteración anterior es un poco pirateada ya que en realidad las cadenas deberían definirse en strings.xml para inglés y para otros idiomas. Si planea hacer algún desarrollo serio de AOSP, ¡debe hacer las cosas bien!

Envolver

Las dos modificaciones que he realizado son muy básicas y hay muchas más que se podrían hacer, incluida la preinstalación de otras aplicaciones, la adición de tonos de llamada y fondos de pantalla y el ajuste del kernel. Sin embargo, espero que esto te haya dado una idea de lo que es posible o al menos te haya dado una idea de cómo construir AOSP y jugar con las entrañas de Android.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Skull & Bones: ya no es solo para tipos blancos

Por qué la marejada ciclónica del huracán Laura podría ser 'insuperable'

Por qué la marejada ciclónica del huracán Laura podría ser ‘insuperable’