Conecta con nosotros

Hola, ¿qué estás buscando?

Actualidad

Cómo compilar Qt para Android desde Ubuntu 16.04

Cómo compilar Qt para Android desde Ubuntu 16.04

Cómo compilar Qt para Android desde Ubuntu 16.04

Hoy vamos a presentar un tutorial para aquellas personas que estén interesadas en utilizar Qt para programar para Android, con la peculiaridad de utilizar Ubuntu 16.04 como sistema operativo.

Posiblemente más de uno se haya encontrado con inconvenientes no solo en el momento de hacer crosscompiling a Android, sino también para hacer funcionar el mismo Qt cuando se emplea la versión descargada del sitio web. Aquí detallaremos todos los pasos a seguir para crosscompilar Qt para Android, empezando por los paquetes necesarios para poder hacer la compilación de forma correcta tanto para el escritorio GNU/Linux como para Android.

Paquetes necesarios

  • g++-arm-linux-gnueabihf (si no queréis compilar para Android, instalad g++ en su lugar).
  • default-jdk.
  • ant.
  • libgl1-mesa-dev.
  • mesa-utils.
  • nvidia-NNN-dev (este solo hay que instalarlo en caso de que se esté utilizado el blob privativo de NVIDIA).
  • gradle (opcional).
  • cpu-checker (opcional).
  • android-tools-adb (opcional).
  • android-tools-fastboot (opcional).
  • android-tools-fsutils (opcional).

Si en vez de Ubuntu estáis utilizando otra distribución, solo tenéis que buscar los paquetes equivalentes. Por ejemplo, para el compilador GCC para C++ posiblemente haya que buscar por gcc-c++ en vez de g++.

Sobre el paquete de NVIDIA, el NNN corresponde corresponde a la versión del driver que se esté utilizando. En mi caso es la 361, aunque por motivos de compatibilidad o bien por estar usando alguna PPA la versión puede variar, tanto para una superior como una inferior.

Instalación de Qt

Aquí enseñaremos a instalar la versión no comercial de Qt, la cual se puede obtener desde el sitio web oficial del proyecto. Cierto que esta versión también está presente en los repositorios de las distintas distribuciones GNU/Linux, pero en caso de instalarla por esa vía, quedará en manos de los mantenedores de la distribución el poner Qt al día, así como la posibilidad de poder instalar distintas versiones de Qt. En caso de quererse tomar en serio la programación en Qt recomiendo la versión de la web en lugar de la de los repositorios.

Para instalar Qt, solo hay que buscar “qt download” (sin las comillas) en Google y hacer clic en el enlace Qt Open Source.

01 Descargar Qt desde Google

Después hay que hacer clic en el botón correspondiente (Download now) en la página web para poder descargar el instalador de Qt.

02 Descargar Qt Open Source desde la web

Un vez descargado el instalador hay que otorgarle permisos de ejecución. Para ello se puede emplear la correspondiente opción en las propiedades del fichero (botón secundario del ratón sobre el instalador) o bien aplicar la siguiente línea de comando desde la carpeta en la que se encuentra ubicado.

chmod a+x qt-unified-linux-x64-2.0.03-1-online.run # La parte 2.0.03-1 corresponde al instalador y puede variar

Después hay que ejecutar el instalador, cosa que se puede hacer haciendo doble clic sobre el fichero o bien ejecutando la siguiente línea de comando desde la carpeta en la que se encuentra ubicado:

./qt-unified-linux-x64-2.0.03-1-online.run # La parte 2.0.03-1 corresponde al instalador y puede variar

Si se quiere instalar Qt en una subcarpeta del sistema se tiene ejecutar con permisos de superusuario (root). En caso de estar usando Ubuntu o alguna distribución que utilice sudo para acceder al superusuario habría que escribir la siguiente línea de comando:

Advertencia, desplázate para continuar leyendo
sudo ./qt-unified-linux-x64-2.0.03-1-online.run

En otras distribuciones donde sudo no esté configurado y la cuenta de root esté habilitada se tendría que hacer lo siguiente:

su
./qt-unified-linux-x64-2.0.03-1-online.run

Para poder instalar Qt desde su medio oficial se requiere tener una cuenta en Qt, la cual se puede crear desde el propio instalador o bien desde el sitio web. Cuando se tenga una cuenta, se puede iniciar sesión para proceder a la instalación.

04 Iniciar sesion en Qt

Como vemos, la instalación no es muy diferente a la de una aplicación de Windows. Una vez llegado a la parte correspondiente a la ruta de instalación, recomiendo encarecidamente colocarlo en la propia carpeta del usuario y no en el sistema (para instalar en una subcarpeta del sistema se requiere iniciar el instalador con permisos de root), ya que a mi en varias ocasiones la instalación en una subcarpeta del sistema me ha dado problemas a la hora de actualizar o modificar las versiones de Qt.

05 Ruta recomendada de instalacion de Qt

Después hay que seleccionar las versiones de Qt a instalar. Según la versión de Android para la que se quiera compilar podría cambiar la versión a elegir, aunque es bueno recordar que la versión 5.6 es LTS y recientemente apareció la versión 5.7, la cual ha avanzado hacia la conversión de Qt como tecnología totalmente libre.

06 Seleccionar versiones de Qt a instalar

El siguiente paso importante es la de aceptar los términos de la licencia para luego proceder a iniciar la instalación propiamente dicha. Recuerdo que se tiene que descargar muchos ficheros que ocupan bastante, por lo que el proceso puede tardar. Por otro lado, a veces los servidores de Qt van bastante lentos y me he que tenido que “tragar” alguna que otra descarga a 100kb/s. Por eso recomiendo realizar la instalación en un momento en el que usuario pueda desentenderse del ordenador por un tiempo.

07 Aceptar los terminos de la licencia de Qt

La herramienta de mantenimiento de Qt

Qt cuenta con una herramienta de mantenimiento que permite actualizar los componentes instalados, modificarlos pudiendo quitar y añadir otras versiones o bien realizar una desinstalación completa. Recomiendo ejecutar esta herramienta para desinstalar Qt en vez de ir borrando manualmente, ya que el proceso es más limpio.

En Ubuntu Unity posiblemente su entrada en el lanzador no aparezca a la primera, aunque para subsanar eso basta con cerrar y volver a iniciar sesión.

09 Herramienta de mantenimiento de Qt

Obtención del SDK y del NDK de Android

Para obtener el SDK y el NDK (que se obtienen por separado), solo hace falta buscarlos en Google a través de “android sdk” y “android ndk” (en ambos casos sin comillas) y hacer clic en el primer enlace que aparece.

En primer lugar se puede descargar el NDK (el orden tampoco es relevante). Después de buscarlo en Google hay que hacer clic sobre el enlace NDK Downloads, aunque antes de iniciar la descarga hay que aceptar los términos de la licencia. El NDK tiene que ser colocado en la propia carpeta del usuario al tratarse de un elemento portable (también se podría colocar en una carpeta del sistema, pero sería complicarlo todo de forma innecesaria). Por otro lado es importante mencionar que el proceso de descompresión tarda bastante.

10 Descargar Android NDK desde Google

11 Descargar el NDK de Android desde el sitio web

Para descargar el SDK se realiza una búsqueda estándar.

12 Descargar Android SDK desde Google

Una vez dentro del sitio web de Android Studio hay que hacer clic sobre Download options.

13 Descargar el SDK de Android desde el sitio web

Luego hay que tener mucho cuidado a la hora de seleccionar el fichero a descargar, ya que hay que hacer clic sobre sobre el SDK solo y NO sobre Android Studio, ya que el IDE de Google no nos interesa para nada. Antes de proceder a la descarga hay que aceptar los términos de la licencia. El SDK de Android también tiene que ser descomprimido en la carpeta del usuario (también por motivos de pragmatismo).

14 Fichero de SDK a descargar para hacer crosscompiling a Android ARM

Instalación de las API de Android desde el SDK y creación del AVD

En primer lugar hay que iniciar la herramienta del SDK. Para ello hay que ejecutar un fichero llamado android localizado en la subcarpeta tools dentro del SDK (que por defecto defecto se llama android-sdk-linux).

15 Iniciar la herramienta de Android SDK

Luego el usuario tiene que seleccionar las API de las versiones de Android que le interese. Por defecto la herramienta selecciona las dos últimas o la última. Una vez seleccionadas las API necesarias hay que hacer clic sobre el botón Install XX packages. El usuario tendrá que aceptar los términos de la licencia y esperar un buen rato, ya que el proceso de descarga tarda bastante tiempo.

16 Seleccionar las API de Android en el SDK

Una vez instalado las API del SDK, se puede proceder a crear los AVD que se crean convenientes para lanzar un entorno de Android para las aplicaciones de Qt. Es importante mencionar aquí que vamos a crear un AVD para Android x86, ya que funcionan mucho mejor sobre una CPU Intel o AMD que los AVD de arquitectura ARM, los cuales funcionan muchísimo más lentos. Eso sí, la compilación de una aplicación para un dispositivo móvil de verdad requiere configurar Qt Creator para que compile para Android ARM.

Antes de empezar con la creación de los AVD, hay que comprobar si se tiene aceleración por hardware para poder ejecutar un AVD con Android x86. En Ubuntu 16.04 se puede realizar la comprobación instalando el paquete cpu-checker y ejecutando luego el siguiente comando:

kvm-ok

Si como resultado se obtiene la frase “KVM acceleration can be used”, significa que se puede hacer uso de los AVD de Android x86 para poder ejecutar sobre estos las aplicaciones y programas realizados con Qt. En caso contrario, el usuario se verá forzado a tener que tirar de AVD de arquitectura ARM, por lo que tendrá que tener paciencia a la hora de desplegar las aplicaciones en el entorno de pruebas (pudiendo ser incluso más recomendable prescindir de los AVD y ejecutar las aplicaciones directamente en el móvil en algunos casos).

También cabe la posibilidad de que los AVD de Android x86 no funcionen a pesar de haberse confirmado la aceleración por hardware. Para ello hay que crear un fichero llamado kvm.conf en /etc/modules-load.d que contenga lo siguiente:

En caso de que la CPU utilizada por la máquina física sea Intel:

kvm_intel

En caso de que la CPU utilizada por la máquina física sea AMD:

kvm_amd

Después de configurar el fichero kvm.conf el usuario puede reiniciar para cargar los módulos o bien ejecutar sudo modprobe kvm_intel o sudo modprobe kvm_amd en una consola para cargar el módulo directamente.

Luego, con la herramienta del SDK de Android abierta, hay que dirigirse a la opción Manage AVD en el menú Tools.

17 Dirigirse a la configuracion de los AVD en el SDK de Android

Después hay que hacer clic sobre el botón Create.

18 Crear un AVD de Android, primer paso

Como la configuración del AVD puede variar según las necesidades del usuario, aquí resaltaremos los puntos críticos que tendrían que configurarse igual para todos los AVD (en caso de disponer de aceleración por hardware). Después de establecer las características del AVD hay que pulsar sobre el botón OK.

19 Crear un AVD de Android, segundo paso

Configurar Qt Creator para compilar Android

Para configurar Qt Creator para trabajar con las API de Android hay que iniciar el mencionado IDE para luego dirigirse al menú Tools y luego hacer clic sobre Options. Una vez accedido a las opciones, hay que dirigirse al apartado Android y configurarlo de forma que quede igual que en la imagen (OpenJDK y Ant se configuran de forma automática). Para ello solo hay que hacer clic en el botón que aparece a la derecha (Browse) de las rutas del SDK y el NDK para seleccionar las ubicaciones en las que se encuentran, las cuales también se pueden escribir a mano. Después de configurar el SDK y el NDK se puede pulsar sobre el botón Apply u OK. El usuario verá si le conviene usar Graddle o Ant, de hecho también se puede hacer la selección a nivel del proyecto.

20 Cómo configurar las API de Android sobre Qt Creator

¿No consigues desplegar los programas en el AVD aunque compilen correctamente? Sigue este consejo

A la hora de configurar un proyecto de Qt para Android lo suyo es configurarlo para que compile para el escritorio, Android x86 y Android ARM. El primero porque no viene mal desplegar las aplicaciones sobre nuestro sistema antes de proceder a ejecutarlo sobre Android, el segundo para probar las creaciones sobre el AVD y el tercero se utiliza solo para cuando se quiera realizar pruebas directamente sobre un móvil o una tablet, por lo que solo hará la función de compilación.

Sin embargo, posiblemente algunos os encontréis con que la aplicación no se despliega sobre el AVD cuando le dais a ejecutar en Qt Creator. Si pasa eso, sería recomendable iniciar antes el AVD de Android y luego desplegar los programas sobre el AVD en ejecución.

21 Ejecutando un programa creado con Qt Creator sobre un AVD de Android en ejecucion

Para cambiar el kit de compilación de Qt Creator solo hay que dirigirse al kit seleccionado en la parte inferior izquierda del IDE y seleccionar el que convenga en ese instante.

22 Configurar los kit de compilacion en Qt Creator

Conclusión

Evidentemente, aquí no vamos a dar una clase sobre cómo programar con Qt ni utilizar su IDE oficial, eso lo dejamos en la pericia del programador, aunque siguiendo estos pasos ya tendría que ser capaz de crear aplicaciones que, utilizando las partes estándares de Qt, pueden ser compiladas tal cual tanto para un escritorio (Windows, Mac y Linux) como para Android (una pena que esto no abarque iOS).

Os dejamos con un vídeo que describe todo este proceso de forma más detallada, con la creación de un pequeño programa que se instala y ejecuta sobre un móvil Android de verdad.

36 Comentarios
Advertencia
Advertencia

Te recomendamos

Actualidad

Microsoft ha anunciado el lanzamiento de .NET 9, una nueva versión de su plataforma de código abierto para el desarrollo y ejecución de aplicaciones con...

Actualidad

Linux Lite 7.2 es la nueva versión de esta derivada de Ubuntu, o quizás de Xubuntu, habida cuenta de que utiliza el entorno de...

A fondo

Ubuntu cumple 20 años. Tal día como hoy… O sea, tal día como ayer, hace dos décadas, comenzaba la andadura de la distribución que...

A fondo

Con motivo del lanzamiento de Ubuntu 24.10, pero sobre todo del 20 aniversario de Ubuntu que celebramos por estas fechas entrevistamos a Oliver Smith,...