En esta página

Portar a Android

La mayoría de las aplicaciones Qt deberían ser portables a Android con facilidad a menos que dependan de una característica específica de hardware o software no soportada por Android.

El enfoque de portabilidad varía en función de si la aplicación existente está basada en QML o en widgets, de la herramienta de compilación prevista y de si se está portando desde una aplicación móvil o de escritorio.

Las aplicaciones basadas en QML creadas con CMake se consideran el mejor enfoque para aplicaciones móviles.

Portar desde aplicaciones Qt de escritorio

La mayor parte del código Qt existente debería funcionar, pero hay que tomar algunas decisiones sobre la escalabilidad y el diseño de la interfaz de usuario para diferentes orientaciones y tamaños de pantalla. Considere la posibilidad de adoptar un enfoque de diseño adaptable para aprovechar al máximo las ventajas de las aplicaciones de Qt Qml.

Hay consideraciones que no se ven directamente afectadas por el uso de Qt, tales como las directrices de la tienda de aplicaciones, directrices temáticas, y otros que pueden afectar a la forma de desarrollar su aplicación. Estos no serán discutidos aquí.

Añadir recursos

La mayoría de las aplicaciones necesitan recursos. Aquí, discutiremos cómo afecta esto a la portabilidad de tu aplicación a Android.

Usando el sistema de recursos de Qt

Como la mayoría de las aplicaciones de interfaz de usuario, las aplicaciones Qt también dependen de recursos como imágenes, iconos, archivos de traducción, y así sucesivamente. Estos recursos deben estar disponibles en el dispositivo, ya que son necesarios para que la aplicación funcione correctamente.

La opción más conveniente es agrupar los recursos en un archivo qrc, que se integra en el binario de la aplicación. Este método reduce considerablemente el esfuerzo de migración y proporciona un acceso más rápido a los recursos. También es un enfoque multiplataforma, lo que facilita la migración a otras plataformas.

Por defecto, todas las aplicaciones Qt pueden acceder al contenido de un archivo qrc utilizando el prefijo ":/" o el prefijo del esquema URL, "qrc:". Para saber más sobre los archivos qrc y cómo se manejan, consulta el Sistema de Recursos Qt.

Añadir recursos utilizando el enfoque de activos

Qt para Android proporciona un sistema de archivos virtual especial que se basa en el mecanismo de activos de Android. Los archivos que se colocan en el directorio"ANDROID_PACKAGE_SOURCE_DIR/assets/" se empaquetan como parte del paquete de la aplicación.

El enfoque de activos es la mejor opción para una mejor interoperabilidad con las APIs de Android. Puedes acceder a todos los recursos del directorio utilizando el prefijo "assets:". A diferencia de qrc, este enfoque es específico de Android, no es una solución multiplataforma.

Nota: El uso del Sistema de Recursos Qt implica tener archivos qrc empaquetados en las bibliotecas compartidas que deben ser desempaquetados primero y cargados por el enlazador, mientras que los activos de Android están comprimidos en el APK y se pueden utilizar directamente en su aplicación. Esto significa que el uso de los activos de Android puede ocupar menos espacio, pero no es una solución multiplataforma con Qt.

El enfoque de activos con CMake

Si eres nuevo en el uso de CMake o CMake con Qt por primera vez, consulta Build with CMake. Aquí, la atención se centra en los pasos aplicables para añadir recursos.

Es probable que quieras modificar algunas cosas que están controladas por el archivo Manifest de Android. Ver Qt for Android Manifest File Configuration para más información al respecto. Así que es probable que ya haya establecido QT_ANDROID_PACKAGE_SOURCE_DIR así:

set_property(TARGET target_name PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
             "${CMAKE_CURRENT_SOURCE_DIR}/android")

Ahora, usted puede colocar sus activos directamente en esa carpeta o tener un paso personalizado con CMake para copiarlos desde la ruta principal del proyecto a la ruta de activos.

Entonces, puedes acceder a esa imagen asset desde C++ como sigue:

QImage image("assets:/images/happy.png");

© 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.