En esta página

Configuración del archivo de manifiesto de Qt para Android

El Manifiesto de Android es un archivo XML necesario para cualquier aplicación Android. Contiene la configuración de la aplicación para diferentes ajustes y características que la aplicación utiliza, así como detalles sobre la propia aplicación, tales como, nombre del paquete, nombre de la aplicación, versión, etc. Los permisos y las características de hardware también se pueden configurar desde el manifiesto.

Qt para Android mantiene una versión de AndroidManifest.xml con la configuración por defecto que incluye características, permisos y otras configuraciones utilizadas por el sistema de construcción que son necesarias para construir y ejecutar aplicaciones Qt en Android.

Configuración del proyecto Qt en el manifiesto

Qt define algunos metadatos que se pasan de los sistemas de construcción y a androiddeployqt que rellena el manifiesto con los valores correctos sin establecer explícitamente estos en el archivo de manifiesto. Tales meta-datos se les asigna un valor en la forma "-- %%INSERT_VALUE%% --", por ejemplo:

<manifest ...
    android:versionCode="-- %%INSERT_VERSION_CODE%% --"
    ...
</manifest>

Esto se rellenaría con el código de versión que se establece en, por ejemplo, CMake.

Configuración por defecto de Qt

Qt establece la siguiente configuración del manifiesto por defecto:

SecciónOpciónDescripción
<manifiesto>paqueteEstablece el nombre del paquete. El valor por defecto es org.qtproject.example.app_name.

Advertencia: Este campo está obsoleto y se ha movido a build.gradle. Se eliminará en una próxima versión.

android:ubicacióndeinstalaciónEstablece la ubicación de instalación de la aplicación, ya sea almacenamiento interno o externo. El valor por defecto es auto.
android:versionCodeEstablece el código de la versión interna. Se rellena a partir de ANDROID_VERSION_CODE (qmake) y QT_ANDROID_VERSION_CODE (CMake). El valor por defecto es 1.
android:versionNombreEstablece el nombre público de la versión. Obtenido de ANDROID_VERSION_NAME (qmake) y QT_ANDROID_VERSION_NAME (CMake). El valor por defecto es 1.0.
<supports-pantallas>Establece los tamaños de pantalla que soporta la aplicación, los valores por defecto son anyDensity, largeScreens, normalScreens, y smallScreens.
<aplicación>android:nameEl nombre de clase de la aplicación. El valor por defecto es org.qtproject.qt.android.bindings.QtApplication.
android:labelLa etiqueta del nombre de la aplicación. El valor por defecto es el nombre de destino del proyecto Qt. Se puede configurar usando QT_ANDROID_APP_NAME.
android:iconEl icono de la aplicación como referencia a un recurso drawable o mipmap. Esta etiqueta no se utiliza a menos que se establezca usando QT_ANDROID_APP_ICON o manualmente en AndroidManifest.xml.
android:hardwareAcceleratedEstablece la preferencia de aceleración por hardware. El valor por defecto es true.
android:requestLegacyAlmacenamientoExternoEstablece si se debe utilizar el almacenamiento externo de Android. El valor por defecto es true.
android:allowBackupSi se permite que la aplicación participe en la infraestructura de copia de seguridad y restauración. Si se establece en false, no se realizará ninguna copia de seguridad ni restauración de la aplicación. El valor por defecto es true.
android:fullBackupOnlyUtilizar o no la copia de seguridad automática en los dispositivos en los que esté disponible. El valor por defecto es false.
<actividad>android:nameEl nombre de la clase de actividad. El valor por defecto es org.qtproject.qt.android.bindings.QtActivity.
android:configCambiosLista los cambios de configuración que maneja la actividad. El valor por defecto es orientation, uiMode, screenLayout, screenSize, smallestScreenSize, layoutDirection, locale, fontScale, keyboard, keyboardHidden, navigation, mcc, mnc, density.
android:launchModeEl método utilizado para lanzar la actividad. El valor por defecto es singleTop.
android:screenOrientationLa orientación de la pantalla de la actividad en el dispositivo. El valor por defecto es unspecified.
<filtro de intents>Especifica los tipos de intents a los que puede responder la actividad. El valor por defecto es
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
android:exportadoEstablece si la actividad puede ser lanzada por componentes de otras aplicaciones. El valor por defecto es true.

Meta-datos específicos de Qt

Además de la configuración del manifiesto por defecto que Qt establece, Qt define algunos metadatos que son válidos sólo para aplicaciones Qt. Dichos metadatos se encuentran normalmente en la sección <activity> de la forma:

<meta-data
    android:name="meta-data-name"
    android:value="meta-data-value" />

La siguiente es una lista de los metadatos definidos por Qt:

Meta-datos NombreDescripción
android.app.lib_name El nombre de archivo de la librería nativa C++ que es usada por la actividad.

Nota: Este atributo es obligatorio y no debe ser eliminado. El valor por defecto es el nombre de destino del proyecto Qt.

android.app.extract_android_styleEl método utilizado para extraer la información nativa de Android Style. Para obtener más información, consulte Extracción de estilos. El valor por defecto es minimal.
android.app.background_running Establece si la aplicación sigue ejecutando tareas en segundo plano. Establecer esto a true es el equivalente de establecer la variable de entorno QT_BLOCK_EVENT_LOOPS_WHEN_SUSPENDED a 0. El valor por defecto es false.

Advertencia: Establecerlo a true puede causar un fallo inesperado si la aplicación intenta dibujar después de que se envíe la señal QGuiApplication::applicationStateChanged() con un estado Qt::ApplicationSuspended.

android.app.arguments Establece una lista de argumentos para pasar a la aplicación "arg1 arg2". Se rellena a partir de ANDROID_APPLICATION_ARGUMENTS (qmake) y QT_ANDROID_APPLICATION_ARGUMENTS (CMake). El valor por defecto no se establece.
android.app.splash_screen_drawable_portraitEstablece un dibujable para una pantalla de bienvenida específica para el modo vertical. Por ejemplo: android:resource="@drawable/splash_portrait". El valor por defecto no está definido.
android.app.splash_screen_drawable_landscapeEstablece un dibujable para una pantalla de inicio específica para el modo horizontal. Por ejemplo: android:resource="@drawable/splash_landscape". El valor por defecto no está establecido.
android.app.splash_screen_drawableEstablece un dibujable para una pantalla de bienvenida al inicio de la aplicación.

Nota: Las pantallas de bienvenida específicas de la orientación se comprueban en primer lugar, si no se establecen, esto se utiliza en su lugar. Por ejemplo: android:resource="@drawable/splash". El valor por defecto no está definido.

android.app.splash_screen_stickyEstablece si la pantalla de inicio permanece visible hasta que la aplicación la oculta explícitamente. Para más información, consulta QAndroidApplication::hideSplashScreen().
android.app.trace_locationEspecifica una ubicación en el dispositivo donde la aplicación puede guardar los archivos de seguimiento. Por ejemplo /storage/emulated/0/Android/data/<app_package_name>/files/. Esto es necesario cuando se utiliza el backend de rastreo Common Trace Format (CTF).

Nota: la aplicación necesita permiso de almacenamiento para la ubicación. Por defecto: no establecido.

Metadatos específicos de la aplicación

Algunos atributos de metadatos son específicos de la aplicación y deben colocarse en la sección <application>:

Nombre de los metadatosDescripción
android.app.system_libs_prefix Especifica una ruta de biblioteca de sistema personalizada que se utilizará para la búsqueda de carga de bibliotecas. Esto es necesario cuando se utilizan bibliotecas Qt instaladas fuera del directorio de bibliotecas nativas (JNI) predeterminado de una aplicación. El valor predeterminado es /system/lib/.

Metadatos en los servicios

Algunos atributos de meta-datos también pueden ser usados en Servicios. Los principales son:

Permisos y funciones de Qt

Diferentes módulos Qt pueden requerir algunos permisos o características de Android para funcionar correctamente, por ejemplo, el permiso de cámara en QtMultimedia. La herramienta androiddeployqt se encarga de incluir estos requisitos en el manifiesto de Android durante la compilación. Qt define las siguientes líneas en el manifiesto, que son reemplazadas por los valores reales:

<manifest ...
    <!-- %%INSERT_PERMISSIONS -->
    <!-- %%INSERT_FEATURES -->
    ...
</manifest>

Nota: Si estas líneas se eliminan del manifiesto del proyecto, Qt no podrá incluir los permisos correctos. Por lo que algunas funcionalidades podrían no funcionar correctamente.

Personalizando los permisos

Desde Qt 6.8.1, es posible anular los permisos por defecto establecidos por los módulos Qt. Esto es útil si necesita definir los mismos permisos que utiliza un módulo Qt, pero con atributos adicionales o diferentes.

Hay dos formas de conseguirlo. La primera es usar la función qt_add_android_permission de CMake en la aplicación CMakeLists.txt. Los permisos definidos de esta manera tienen prioridad sobre los mismos permisos definidos por los módulos Qt, evitando la duplicación.

La segunda forma es definir manualmente estos permisos en el archivo de manifiesto de Android. Los permisos definidos de esta manera tienen prioridad sobre los permisos establecidos por los módulos Qt, o establecidos con qt_add_android_permission.

Extracción de estilos

Qt utiliza diferentes métodos para determinar cómo Qt Widgets y Qt Quick Controls deben tener estilo:

  • full: cuando se utiliza Qt Widgets o Qt Quick Controls 1.

    Nota: Este método está obsoleto ya que utiliza algunas interfaces de Android no SDK, que fueron restringidas por Google a partir de Android 9.0 (API 28). Debería utilizar uno de los otros métodos.

  • default o minimal: cuando se utiliza Qt Quick Controls 2 y no Qt Widgets o Qt Quick Controls 1. Esto es más rápido que usar las opciones por defecto o completa.
  • none: sin extracción de estilos.

Manifiesto Qt antes de la versión 6.2

Las versiones de Qt anteriores a la 6.2 solían tener un conjunto adicional de meta-datos definidos por Qt. Estos atributos servían para gestionar dependencias y algunos eran utilizados por el descatalogado servicio Ministro. Con Qt 6.2, deberían ser eliminados. Aquí hay una lista de estos atributos:

  • android.app.qt_sources_resource_id
  • android.app.repository
  • android.app.bundled_libs_resource_id
  • android.app.bundle_local_qt_libs
  • android.app.use_local_qt_libs
  • android.app.libs_prefix
  • android.app.load_local_libs_resource_id
  • android.app.load_local_jars
  • android.app.static_init_classes
  • android.app.qt_libs_resource_id
  • android.app.ministro_not_found_msg
  • android.app.ministro_needed_msg
  • android.app.fatal_error_msg

Para obtener más información sobre el Android Manifest, consulte Android App Manifest.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.