Auf dieser Seite

Konfiguration der Manifest-Datei für Qt auf Android

Das Android-Manifest ist eine XML-Datei, die für jede Android-App erforderlich ist. Es enthält die App-Konfiguration für verschiedene Einstellungen und Funktionen, die die App nutzt, sowie Details zur App selbst, wie z. B. Paketname, App-Name, Version usw. Auch Berechtigungen und Hardwarefunktionen können über das Manifest festgelegt werden.

Qt für Android verwaltet eine Version von „ AndroidManifest.xml “ mit einer Standardkonfiguration, die Funktionen, Berechtigungen und andere vom Build-System verwendete Konfigurationen enthält, die für die Erstellung und Ausführung von Qt-Apps auf Android erforderlich sind.

Konfiguration vom Qt-Projekt zum Manifest

Qt definiert einige Metadaten, die von den Build-Systemen an ` androiddeployqt ` übergeben werden, wodurch das Manifest mit den richtigen Werten gefüllt wird, ohne dass diese explizit in der Manifestdatei festgelegt werden müssen. Solchen Metadaten wird ein Wert in der Form ` "-- %%INSERT_VALUE%% --"` zugewiesen, zum Beispiel:

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

Hier würde der Versionscode eingetragen, der beispielsweise in „ CMake “ festgelegt ist.

Qt-Standardkonfiguration

Qt legt standardmäßig die folgende Manifestkonfiguration fest:

AbschnittOptionBeschreibung
<manifest>packageLegt den Paketnamen fest. Der Standardwert lautet „ org.qtproject.example.app_name “.

Warnung: Dieses Feld ist veraltet und wurde nach „ build.gradle “ verschoben. Es wird in einer kommenden Version entfernt.

android:installLocationLegt den Installationsort der App fest, sei es der interne oder der externe Speicher. Der Standardwert ist „ auto “.
android:versionCodeLegt den internen Versionscode fest. Wird aus ANDROID_VERSION_CODE (qmake) und QT_ANDROID_VERSION_CODE (CMake) übernommen. Der Standardwert ist 1.
android:versionNameLegt den öffentlichen Versionsnamen fest. Wird aus ANDROID_VERSION_NAME (qmake) und QT_ANDROID_VERSION_NAME (CMake) übernommen. Der Standardwert ist 1.0.
<supports-screens>Legt die von der App unterstützten Bildschirmgrößen fest. Die Standardwerte sind anyDensity, largeScreens, normalScreens und smallScreens.
<application>android:nameDer Name der Anwendungsklasse. Der Standardwert lautet „ org.qtproject.qt.android.bindings.QtApplication “.
android:labelDie Bezeichnung der Anwendung. Der Standardwert ist der Zielname des Qt-Projekts. Dieser kann über QT_ANDROID_APP_NAME festgelegt werden.
android:iconDas Anwendungssymbol als Verweis auf eine „drawable“- oder „mipmap“-Ressource. Dieses Tag wird nur verwendet, wenn es über QT_ANDROID_APP_ICON festgelegt oder manuell in der Datei „ AndroidManifest.xml “ gesetzt wurde.
android:hardwareAcceleratedLegt die Einstellung für die Hardwarebeschleunigung fest. Der Standardwert ist ` true`.
<activity>android:nameDer Name der Aktivitätsklasse. Der Standardwert ist „ org.qtproject.qt.android.bindings.QtActivity “.
android:configChangesListet Konfigurationsänderungen auf, die die Aktivität verarbeitet. Der Standardwert lautet „ orientation “, „ uiMode “, „ screenLayout “, „ screenSize “, „ smallestScreenSize “, „ layoutDirection “, „ locale “, „ fontScale “, „ keyboard “, „ keyboardHidden “, „ navigation “, „ mcc “, „ mnc “ und „ density “.
android:launchModeDie Methode, mit der die Aktivität gestartet wird. Der Standardwert ist „ singleTop “.
android:screenOrientationDie Ausrichtung der Anzeige der Aktivität auf dem Gerät. Der Standardwert ist „ unspecified “.
<intent-filter>Gibt die Arten von Intents an, auf die die Aktivität reagieren kann. Der Standardwert ist
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
android:exportedLegt fest, ob die Aktivität von Komponenten anderer Anwendungen gestartet werden kann. Der Standardwert ist „ true “.

Qt-spezifische Metadaten

Zusätzlich zu der von Qt festgelegten Standard-Manifestkonfiguration definiert Qt einige Metadaten, die nur für Qt-Anwendungen gelten. Diese Metadaten befinden sich in der Regel im Abschnitt „ <activity> “ in folgender Form:

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

Im Folgenden finden Sie eine Liste dieser von Qt definierten Metadaten:

Name der MetadatenBeschreibung
android.app.lib_name Der Dateiname der nativen C++-Bibliothek, die von der Aktivität verwendet wird.

Hinweis: Dieses Attribut ist obligatorisch und darf nicht entfernt werden. Der Standardwert ist der Zielname des Qt-Projekts.

android.app.extract_android_styleDie Methode, die zum Extrahieren der nativen Android-Stilinformationen verwendet wird. Weitere Informationen finden Sie unter „Style Extraction“. Der Standardwert lautet „ minimal “.
android.app.background_running Legt fest, ob die App Aufgaben im Hintergrund weiter ausführt. Die Einstellung auf „ true “ entspricht der Einstellung der Umgebungsvariable „ QT_BLOCK_EVENT_LOOPS_WHEN_SUSPENDED “ auf „ 0 “. Der Standardwert ist „ false “.

Warnung: Die Einstellung auf „ true “ kann zu unerwarteten Abstürzen führen, wenn die Anwendung versucht, eine Darstellung zu erzeugen, nachdem das Signal „ QGuiApplication::applicationStateChanged()“ mit dem Status „ Qt::ApplicationSuspended “ gesendet wurde.

android.app.arguments Legt eine Liste von Argumenten fest, die an die App „ "arg1 arg2" “ übergeben werden sollen. Wird aus „ ANDROID_APPLICATION_ARGUMENTS “ (qmake) und „ QT_ANDROID_APPLICATION_ARGUMENTS “ (CMake) gefüllt. Der Standardwert ist nicht festgelegt.
android.app.splash_screen_drawable_portraitLegt ein Drawable für einen Splash-Screen speziell für den Hochformatmodus fest. Beispiel: android:resource="@drawable/splash_portrait". Der Standardwert ist nicht festgelegt.
android.app.splash_screen_drawable_landscapeLegt ein Drawable für einen Splash-Screen fest, der speziell für den Querformat-Modus bestimmt ist. Beispiel: android:resource="@drawable/splash_landscape". Der Standardwert ist nicht festgelegt.
android.app.splash_screen_drawableLegt ein Drawable für einen Begrüßungsbildschirm beim Start der App fest.

Hinweis: Zuerst werdenausrichtungsspezifische Startbildschirme geprüft; sind diese nicht festgelegt, wird stattdessen dieses Element verwendet. Beispiel: android:resource="@drawable/splash". Der Standardwert ist nicht festgelegt.

android.app.splash_screen_stickyLegt fest, ob der Splash-Screen sichtbar bleibt, bis er von der App explizit ausgeblendet wird. Weitere Informationen finden Sie unter QAndroidApplication::hideSplashScreen().
android.app.trace_locationGibt einen Speicherort auf dem Gerät an, an dem die Anwendung Trace-Dateien speichern kann. Beispiel: /storage/emulated/0/Android/data/<app_package_name>/files/. Dies ist bei Verwendung des Common Trace Format (CTF)-Trace-Backends erforderlich.

Hinweis: Die Anwendung benötigt Speicherberechtigung für diesen Speicherort. Standard: nicht festgelegt.

Anwendungsspezifische Metadaten

Einige Metadaten-Attribute gelten anwendungsweit und sollten im Abschnitt „ <application> “ platziert werden:

Metadaten-NameBeschreibung
android.app.system_libs_prefix Gibt einen benutzerdefinierten Systembibliothekspfad an, der für die Suche beim Laden von Bibliotheken verwendet werden soll. Dies ist erforderlich, wenn Qt-Bibliotheken verwendet werden, die außerhalb des standardmäßigen nativen (JNI-)Bibliotheksverzeichnisses einer App installiert sind. Der Standardwert lautet „ /system/lib/ “.

Metadaten in Diensten

Einige Metadaten-Attribute können auch in Diensten verwendet werden. Die wichtigsten sind:

Qt-Berechtigungen und Funktionen

Verschiedene Qt-Module benötigen möglicherweise bestimmte Android-Berechtigungen oder -Funktionen, um ordnungsgemäß zu funktionieren, beispielsweise die Kameraberechtigung in QtMultimedia. Das Tool „androiddeployqt“ sorgt dafür, dass solche Anforderungen während des Build-Vorgangs in das Android-Manifest aufgenommen werden. Qt definiert die folgenden Zeilen im Manifest, die durch die tatsächlichen Werte ersetzt werden:

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

Hinweis: Wenn diese Zeilen aus dem Projekt-Manifest entfernt werden, kann Qt die richtigen Berechtigungen nicht einbinden. Daher funktionieren einige Funktionen möglicherweise nicht ordnungsgemäß.

Anpassen von Berechtigungen

Seit Qt 6.8.1 ist es möglich, die von Qt-Modulen festgelegten Standardberechtigungen zu überschreiben. Dies ist nützlich, wenn Sie dieselben Berechtigungen wie ein Qt-Modul definieren müssen, jedoch mit zusätzlichen oder anderen Attributen.

Dafür gibt es zwei Möglichkeiten. Die erste Möglichkeit besteht darin, die CMake-Funktion ` qt_add_android_permission ` in der Datei ` CMakeLists.txt` der Anwendung zu verwenden. Auf diese Weise definierte Berechtigungen haben Vorrang vor denselben Berechtigungen, die von Qt-Modulen definiert wurden, wodurch Doppelungen vermieden werden.

Die zweite Möglichkeit besteht darin, diese Berechtigungen manuell in der Android-Manifestdatei zu definieren. Auf diese Weise definierte Berechtigungen haben Vorrang vor Berechtigungen, die von Qt-Modulen festgelegt oder mit `qt_add_android_permission` gesetzt wurden.

Stil-Extraktion

Qt verwendet verschiedene Methoden, um zu bestimmen, wie Qt Widgets und Qt Quick Controls gestaltet werden sollen:

  • full: Bei Verwendung von Qt Widgets oder Qt Quick Controls 1.

    Hinweis: Diese Methode ist veraltet, da sie einige Android-Schnittstellen außerhalb des SDKs verwendet, die von Google ab Android 9.0 (API 28) eingeschränkt wurden. Sie sollten eine der anderen Methoden verwenden.

  • default oder minimal: bei Verwendung von Qt Quick Controls 2 und ohne Qt Widgets oder Qt Quick Controls 1. Dies ist schneller als die Verwendung der Optionen „default“ oder „full“.
  • none: keine Stil-Extraktion.

Qt-Manifest vor Version 6.2

In Qt-Versionen vor 6.2 gab es früher einen zusätzlichen Satz von Metadaten, die von Qt definiert wurden. Diese Attribute dienten der Verwaltung von Abhängigkeiten, und einige wurden vom inzwischen eingestellten Dienst „ Ministro “ verwendet. Mit Qt 6.2 sollten sie entfernt werden. Hier ist eine Liste dieser Attribute:

  • 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_benötigt_Meldung
  • android.app.schwerwiegender_Fehler_Meldung

Weitere Informationen zum Android-Manifest finden Sie unter „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.