Portierung auf Android
Die meisten Qt-Anwendungen lassen sich problemlos auf Android portieren, sofern sie nicht von einer bestimmten Hardware- oder Softwarefunktion abhängen, die von Android nicht unterstützt wird.
Der Portierungsansatz hängt davon ab, ob die bestehende Anwendung auf QML oder Widgets basiert, welches Build-Tool Sie verwenden möchten und ob Sie eine mobile oder eine Desktop-Anwendung portieren.
QML-basierte Anwendungen, die mit CMake erstellt wurden, gelten als der beste Ansatz für mobile Anwendungen.
Portierung von Qt-Desktop-Anwendungen
Der Großteil Ihres bestehenden Qt-Codes sollte funktionieren, doch Sie müssen einige Entscheidungen hinsichtlich der Skalierbarkeit Ihrer Benutzeroberfläche sowie des Layouts für verschiedene Ausrichtungen und Bildschirmgrößen treffen. Ziehen Sie einen Ansatz mit responsiven Layouts in Betracht, um die Vorteile von „ Qt Qml -Anwendungen“ voll auszuschöpfen.
Es gibt Aspekte, die nicht direkt von der Verwendung von Qt beeinflusst werden, wie z. B. App-Store-Richtlinien, Theme-Richtlinien und andere, die sich auf die Art und Weise auswirken können, wie Sie Ihre Anwendung entwickeln. Diese werden hier nicht behandelt.
Hinzufügen von Ressourcen
Die meisten Anwendungen benötigen Ressourcen. Hier erläutern wir, wie sich dies auf die Portierung Ihrer Anwendung auf Android auswirkt.
Verwendung des Qt-Ressourcensystems
Wie die meisten UI-Anwendungen sind auch Qt-Anwendungen auf Ressourcen wie Bilder, Symbole, Übersetzungsdateien usw. angewiesen. Diese Ressourcen müssen auf dem Gerät verfügbar sein, da sie für die korrekte Funktion der Anwendung erforderlich sind.
Am bequemsten ist es, die Ressourcen in einer qrc-Datei zu bündeln, die in die Anwendungsbinärdatei eingebunden wird. Dieser Ansatz reduziert den Portierungsaufwand erheblich und ermöglicht einen schnelleren Zugriff auf die Ressourcen. Zudem handelt es sich um einen plattformübergreifenden Ansatz, der die Portierung auf andere Plattformen erleichtert.
Standardmäßig können alle Qt-Anwendungen über das Präfix „:/“ oder das URL-Schema-Präfix „qrc:“ auf den Inhalt einer qrc-Datei zugreifen. Weitere Informationen zu qrc-Dateien und deren Handhabung finden Sie im Qt-Ressourcensystem.
Hinzufügen von Ressourcen mithilfe des Asset-Ansatzes
Qt für Android stellt ein spezielles, virtuelles Dateisystem bereit, das auf dem Android-Assets-Mechanismus basiert. Dateien, die im Verzeichnis „ANDROID_PACKAGE_SOURCE_DIR/assets/“ abgelegt werden, werden als Teil Ihres Anwendungspakets verpackt.
Der Asset-Ansatz ist die beste Option für eine bessere Interoperabilität mit den Android-APIs. Sie können auf alle Ressourcen im Verzeichnis mit dem Präfix „assets:“ zugreifen. Im Gegensatz zu qrc ist dieser Ansatz Android-spezifisch und keine plattformübergreifende Lösung.
Hinweis: Bei Verwendung des Qt-Ressourcensystems werden die „ qrc “-Dateien in die gemeinsam genutzten Bibliotheken eingebunden, die zunächst entpackt und vom Linker geladen werden müssen, während die Android-Assets in der APK komprimiert sind und direkt in Ihrer Anwendung verwendet werden können. Das bedeutet, dass die Verwendung der Android-Assets weniger Speicherplatz beansprucht, es sich jedoch nicht um eine plattformübergreifende Lösung mit Qt handelt.
Der Asset-Ansatz mit CMake
Wenn Sie noch keine Erfahrung mit CMake haben oder CMake zum ersten Mal mit Qt verwenden, lesen Sie den Abschnitt „Erstellen mit CMake“. Hier liegt der Schwerpunkt auf den Schritten zum Hinzufügen von Ressourcen.
Wahrscheinlich möchten Sie einige Einstellungen ändern, die über die Android-Manifest-Datei gesteuert werden. Weitere Informationen dazu finden Sie unter „Konfiguration der Android-Manifest-Datei für Qt “. Vermutlich haben Sie QT_ANDROID_PACKAGE_SOURCE_DIR bereits wie folgt festgelegt:
set_property(TARGET target_name PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
"${CMAKE_CURRENT_SOURCE_DIR}/android")Nun können Sie Ihre Assets direkt in diesem Ordner ablegen oder einen benutzerdefinierten Schritt mit CMake einrichten, um sie vom Hauptprojektpfad in den Asset-Pfad zu kopieren.
Anschließend können Sie von C++ aus wie folgt auf diese Bild-Asset zugreifen:
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.