Compilar para Android

Última actualización Diciembre 15, 2020

[ADVERTENCIA] La compilación para Android está actualmente dañada, debido a cambios en Qt y Gradle. Tu ayuda con la actualización (o reescritura) de los scripts de Gradle sería genial.

Lea la guía general de compilación para obtener información sobre cómo compilar en otras plataformas. Este archivo solo incluye instrucciones específicas para Android. Tenga en cuenta que estas instrucciones son válidas para compilar en Oculus Quest 1.

Dependencias

La compilación soporta Windows, OSX y Linux, pero se recomienda a los desarrolladores que deseen trabajar en las dependencias de la biblioteca que utilicen Linux de 64 bits como plataforma de compilación.

Dependencias específicas del Sistema Operativo

Instale las dependencias para su sistema operativo siguiendo las instrucciones de compilación para Windows, OSX o Linux antes de intentar compilar para Android.

Android Studio

Descarga el instalador de Android Studio y ejecútalo. Una vez instalado, haz clic en File, luego en Settings, expande Appearence & Behavior, luego System Settings y selecciona Android SDK.

Desde la pestaña SDK Platforms, seleccione los API Levels 26 y 28.

Desde la pestaña SDK Tools, seleccione

  • Herramientas de compilación del SDK de Android

  • Herramientas de depuración de GPU

  • LLDB

  • Herramientas de Plataforma del SDK de Android

  • Herramientas del SDK de Android

  • NDK (aún si ha instalado NDK por separado)

En la pestaña SDK Tools, marque Show Package Details en la parte inferior. Seleccione CMake 3.6.4. Haga esto incluso si tiene una instalación independiente de CMake. Además, asegúrese de que la versión del NDK instalado sea la 18 (o superior).

Ahora retorne a File - Project Structure y luego, en Project, establece la Versión del complemento Gradle de Android en 3.2.1 y la Versión Gradle en 4.10.1.

Si Android Studio abre el cuadro de diálogo "Plugin Update Recommeded", no hagas clic en Actualizar, solo haz clic en la X en la parte superior derecha para cerrarlo. Las versiones posteriores del complemento Gradle tienen problemas conocidos con cz.malohlava.

Entorno

Crear un almacén de claves en Android Studio

Sigue las instrucciones aquí para crear un archivo de almacén de claves. Puedes guardarlo en cualquier lugar (preferiblemente fuera de la carpeta overte).

Configurar las propiedades específicas de Gradle

Crea un archivo gradle.properties en la carpeta .gradle ($HOME/.gradle en Unix, Users/<su nombre>/.gradle en Windows). Edita el archivo para que contenga lo siguiente

HIFI_ANDROID_PRECOMPILED=<your_home_directory>/Android/hifi_externals
HIFI_ANDROID_KEYSTORE=<key_store_directory>/<keystore_name>.jks
HIFI_ANDROID_KEYSTORE_PASSWORD=<password>
HIFI_ANDROID_KEY_ALIAS=<key_alias>
HIFI_ANDROID_KEY_PASSWORD=<key_passwords>

Nota: No use $HOME como ruta. Debe ser un nombre de ruta completo. Además, asegúrese de usar barras diagonales en la ruta.

Si estás compilando para Android

Agregue estas líneas al archivo gradle.properties

SUPPRESS_QUEST_INTERFACE
SUPPRESS_QUEST_FRAME_PLAYER

Si está compilando para Oculus Quest

Agregue estas líneas al archivo gradle.properties

SUPPRESS_INTERFACE
SUPPRESS_FRAME_PLAYER

El Frame Player tanto para Android como para Oculus Quest es opcional, por lo que si encuentra problemas con estos durante la compilación, puede omitirlos agregando estas líneas a gradle.properties

SUPPRESS_FRAME_PLAYER
SUPPRESS_QUEST_FRAME_PLAYER

Clonar el repositorio

git clone https://github.com/overte-org/overte.git

Compilar y ejecutar

Compilar los módulos

  • Abrir Android Studio

  • Seleccionar Open an existing Android Studio project

  • Navegar hasta el repositorio overte que clonó. Elegir la carpeta android y seleccionar OK

  • Esperar a que Gradle se sincronice (esto podría tardar más de 20 minutos la primera vez)

  • Si aparece un cuadro de diálogo con el mensaje "Plugin Update Recommeded", no haga clic en "Update", simplemente haga clic en la X situada en la parte superior derecha para cerrarlo.

  • En la ventana Project, haga clic en el proyecto que desee compilar (por ejemplo, «questInterface»), luego haga clic en Build en el menú superior y selecciona Make Module 'questInterface'

  • De forma predeterminada, esto creará el apk tipo "debug". Puede cambiarlo abriendo la ventana Build Variants (Variantes de compilación) en el lado izquierdo y seleccionando otros tipos de compilación, como "release" (lanzamiento).

  • El APK recién creado debe residir en overte\android\apps\questInterface\release (si ha elegido la versión release).

Ejecutar un módulo

Puede utilizar la línea de comandos «adb» u otras herramientas de desarrollo para instalar (sideload en Quest) tu APK recién creado, o puede seguir las instrucciones que se indican a continuación para cargar el APK a través de Android Studio.

  • En la barra de herramientas situada en la parte superior de Android Studio, junto al icono del martillo verde, debería ver un menú desplegable.

  • Es posible que ya vea una configuración para el módulo que está intentando compilar. Si es así, selecciónela.

  • En otro caso, seleccione Edit Configurations.

Su configuración debe ser

  • Tipo: App para Android

  • Module: <su módulo> (probablemente interface o questInterface)

Para los módulos de interfaz, también debe seleccionar la actividad que desea iniciar.

Para la Interfaz Android

  • Desde el menú desplegable Launch , seleccione Specified Activity

  • En el cuadro de texto Activity, coloque io.highfidelity.hifiinterface.PermissionChecker

Para la interfaz Oculus Quest

  • Desde el menú desplegable Launch , seleccione Specified Activity

  • En el campo Activity , colocar io.highfidelity.questInterface.PermissionsChecker

Note la 's' en PermissionsChecker para Quest.

¡Ya puede ejecutar el módulo! Haga clic en el botón verde de reproducción en la barra de herramientas superior de Android Studio.

Solución de Problemas

Para ver un registro de depuración más detallado,

  • Haga clic en el icono con los dos cuadrados superpuestos en la esquina superior izquierda de la pestaña donde se está ejecutando la sincronización (el texto emergente dice Toggle view)

  • Para cambiar el nivel de detalle de las notificaciones, selecciones File > Settings. Bajo Build, Execution, Deployment > Compiler puede agregar banderas par la línea de comandos, tal como está definido en la documentación de Gradle

Si tiene problemas con CMake, pruebe a añadir la siguiente variable de entorno del sistema:

En el menú de inicio, busque ‘Editar las variables de entorno del sistema’ y ábralo.

  • Seleccione la pestaña 'Advanced' luego 'Environment Variables'

  • Seleccione 'Nuevo' en Variables del sistema

  • Agregue QT_CMAKE_PREFIX_PATH en "Variable name"

  • Establezca como «Variable value» el directorio en el que su compilación de Android colocó el directorio CMake de la biblioteca CMake 3.6.4 (por ejemplo: android\qt\lib\cmake).

Algunas cosas que puedes probar si quieres hacer una compilación limpia

  • Elimina las carpetas build y .externalNativeBuild de la carpeta de cada módulo que estás compilando (por ejemplo, overte/android/apps/interface)

  • Si ha configurado la variable de entorno HIFI_VCPKG_ROOT, elimine el contenido del directorio definido; de lo contrario, elimine AppData/Local/Temp/hifi

  • En Android Studio, haz clic en File > Invalidate Caches / Restart y selecciona Invalidate and Restart

Si ve muchos errores "couldn't acquire lock",

  • Abra el Administrador de Tareas y cierre todos los procesos Clang / Gradle que estén en ejecución