Puedes ayudar a desarrollar el sistema operativo más instalado de la historia. Sí, estás aquí para emprender el camino que te convertirá en ingeniero de la plataforma de Android.
Aunque el recorrido es desafiante, el equipo de Android se esfuerza por simplificar el camino en cada lanzamiento. Todos los días, trabajamos directamente en el Proyecto de código abierto de Android (AOSP) para realizar mejoras.
Por eso relájate, enciende una terminal y hagamos historia.
Objetivos
Este codelab tiene dos objetivos:
- Darte una idea de cómo es el flujo de trabajo de desarrollo para los ingenieros de Android que trabajan en la plataforma (sistema operativo)
- Animarte a brindar comentarios sobre las herramientas, la documentación y el flujo de trabajo de desarrollo de Android cuando empiezas desde cero
Requisitos previos
A continuación, se muestra la lista completa de requisitos del codelab, que derivan de los requisitos para el desarrollo de plataformas en general (AOSP).
Para completar este codelab, debes configurar lo siguiente:
- Estación de trabajo física de Linux que cumpla con todos los requisitos públicos
- Configuración de Git y Repo para editar la base de código de Android
Entorno
Por lo general, los usuarios compilan y desarrollan en la estación de trabajo directamente. Como es posible que estés trabajando en diferentes terminales, y muchos de los comandos utilizados sean específicos de una terminal, deberás volver a ejecutarlos en cada sesión de terminal. Se incluyen específicamente los comandos source build/envsetup.sh
y lunch
.
Cómo configurar la estación de trabajo
- Instala los paquetes necesarios en la estación de trabajo.
- Desde la terminal, instala Repo y obtén las credenciales para todos los repositorios de Git.
Cómo inicializar y sincronizar el código
Ve a tu directorio principal:
cd ~
En su interior, crea un subdirectorio de trabajo local:
mkdir aosp
Ve al directorio:
cd aosp
Inicializa la rama principal del código fuente del repositorio de AOSP (opción predeterminada):
repo init -u https://android.googlesource.com/platform/manifest
Ingresa o acepta tus credenciales de Git (nombre, dirección de correo electrónico).
Sincroniza el código fuente:
repo sync -j16
Las sincronizaciones iniciales pueden tardar una hora o más. Consulta las instrucciones de descarga para obtener información relacionada mientras esperas.
Cada proceso de repo se representa con un archivo de manifiesto. Es posible que tengas más de un proceso de Repo a la vez, siempre y cuando estos se encuentren en distintos directorios. Sin embargo, ten en cuenta que cada checkout y compilación equivale a aproximadamente 300 GB o más. Por lo tanto, limita la cantidad a dos o aumenta el sistema con una unidad secundaria.
Sugerencia: Para liberar espacio, borra un directorio secundario y vuelve a comenzar desde la creación del directorio:
rm -rf aosp2
Cómo compilar el código
Para compilar Android, selecciona un tipo de dispositivo de destino a fin de compilar con el comando lunch
. Los destinos son permutaciones de dispositivo, como un factor de forma o modelo específico.
La orientación por dispositivo incluida a continuación, aosp_cf_x86_phone-userdebug
, te permite compilar el dispositivo Android virtual Cuttlefish para realizar pruebas sin un dispositivo físico.
Si quieres compilar y actualizar un dispositivo físico, elige otro objetivo y sigue las instrucciones para escribir en la memoria flash de dispositivos.
Configura el entorno a fin de compilar dispositivos Android. Para ello, ejecuta el siguiente comando desde la raíz del checkout del código fuente:
source build/envsetup.sh
Pasa el objetivo de compilación al comando de lanzamiento de la siguiente manera:
lunch aosp_cf_x86_phone-userdebug
Compila el código desde cualquier parte del resultado con lo siguiente:
m
Es posible que la primera compilación tarde varias horas. Las compilaciones posteriores toman mucho menos tiempo.
Cómo crear una instancia de Acloud
Acloud es una herramienta de línea de comandos en AOSP que ayuda a los usuarios a crear dispositivos Android virtuales, en este caso, Cuttlefish.
Si estás en la misma sesión de terminal que usaste para compilar el código, continúa. De lo contrario, vuelve a ejecutar la secuencia de comandos de envsetup.sh
y el mismo comando de lanzamiento que ya usaste. Luego, haz lo siguiente:
Crea una instancia local de Acloud con:
acloud create --local-image --local-instance
Acepta actualizaciones de paquetes obligatorios.
Si se te solicita, reinicia tu estación de trabajo para que se apliquen todos los cambios.
Selecciona el dispositivo Cuttlefish.
Deberías ver una sesión de VNC que contenga un dispositivo Android.
Puedes usar el mouse y el teclado para interactuar con el dispositivo virtual en tu estación de trabajo. También puedes seguir la actividad dentro de los registros mientras usas el dispositivo con el comando Android Debug Bridge (adb) logcat
:
adb logcat
Cómo hacer un cambio
Actualiza el código fuente según esta lista de cambios de ejemplo.
Desde la raíz del checkout (directorio
aosp/
), ve al proyecto de Git deframeworks/native
:cd frameworks/native
Inicia un proyecto temporal con:
repo start <some-name> .
Edita
SurfaceFlinger.cpp
a fin de incluir las actualizaciones de la lista de cambios que se encuentra en la siguiente ubicación:aosp/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
Compila el código:
m
Actualiza la compilación en el dispositivo:
adb root adb remount adb sync adb reboot acloud reconnect
Deberías ver un cambio de color en el dispositivo.
Cómo probar el código
Durante esta parte del codelab, ejecutaremos una prueba de ejemplo que se encuentra en el árbol de fuente y que ya presenta errores. A fin de ejecutar la prueba a nivel local, usaremos Atest para probar el código.
Para usar la prueba, haz lo siguiente:
Ejecuta:
atest DevCodelabTest
Como la prueba fallará, vamos a corregirla. Busca el código fuente de la prueba que falló:
atest --info android.test.example.devcodelab.DevCodelabTest#testHelloWorld
Luego, busca dentro del siguiente directorio:
platform_testing/tests/example/devcodelab
En el archivo que editarás, toma el nombre de la prueba y reemplaza
.
por/
, de la siguiente manera:android.test.example.devcodelab.DevCodelabTest
Se convierte en lo siguiente:
src/android/test/example/devcodelab/DevCodelabTest.java
Edita lo siguiente:
platform_testing/tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.java
Para reemplazar:
Assert.assertTrue(false)
Con:
Assert.assertTrue(true)
Vuelve a ejecutar la prueba para verificar que se haya corregido:
atest DevCodelabTest
Cómo subir el código para revisión
El repositorio simplifica el uso de Git. Para ello, agrupa comandos como git clone
a fin de aplicarlos en varios repositorios (o proyectos) de Git al mismo tiempo.
Consulta las herramientas de control de código fuente para obtener descripciones generales de Git y Repo con vínculos a la documentación completa sobre cómo trabajar con el código fuente de Android. Consulta en el repositorio de AOSP la lista completa de proyectos de Git y los proyectos (rutas de acceso) individuales para ramas asociadas con cada proyecto.
Usarás el sistema de revisión de código basado en la Web de Gerrit para proyectos en Git.
Si hiciste cambios en el proyecto de
frameworks/native
, ejecuta estos comandos para subirlos:cd frameworks/native repo start codelab . git add . git commit
Para el mensaje de confirmación, ingresa lo siguiente:
Android codelab change Test: manual atest
Sube el cambio:
repo upload
Si lo haces correctamente, verás un mensaje similar al siguiente:
Upload project frameworks/native/ to remote branch master:
branch codelab ( 1 commit, Wed Aug 7 09:32:33 2019 -0700):
ff46b36d android codelab change
to https://android-review.googlesource.com/ (y/N)? y
remote: Processing changes: refs: 1, new: 1, done
remote:
remote: SUCCESS
remote:
remote: https://android-review.googlesource.com/c/platform/frameworks/native/+/1098432 android codelab change [NEW]
remote:
To https://android-review.googlesource.com/platform/frameworks/native
* [new branch] codelab -> refs/for/master
Cómo ver el cambio en Gerrit
Ve al vínculo impreso en la terminal, similar al siguiente:
https://android-review.googlesource.com/c/platform/frameworks/native/+/1098432
De esta manera, finaliza el codelab para principiantes sobre desarrollo para la plataforma de Android. Consulta Cómo enviar parches para conocer los próximos pasos y explora el resto de este sitio a fin de obtener toda la información sobre cómo desarrollar para Android.
Cómo revertir el cambio
Normalmente, después de la prueba y la revisión o aprobación, debes enviar el cambio en Gerrit y fusionarlo en el repositorio.
En su lugar, a efectos del codelab, revierte la lista de cambios. Para ello, haz clic en Abandonar en Gerrit.
A continuación, abandona la rama temporal asociada en el directorio del proyecto nativo o de marco de trabajo (o sus subramas):
repo abandon codelab .
Además, recuerda revertir los cambios en el archivo de prueba. Debido a que no aplicamos las acciones de repo start
, git commit
y repo upload
para el cambio, podemos restablecer el archivo de la siguiente manera (suponiendo que te encuentres en el aosp/platform_testing directory
):
git reset HEAD tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.java
git checkout .
Terminaste por ahora. ¡Bien hecho!
Obtén ayuda
Si encuentras errores durante este codelab, infórmalos mediante el vínculo Comentarios acerca del sitio que se encuentra en la parte inferior de cualquier página. Envía preguntas al grupo android-building.