Qt Android Manifest Datei Konfiguration

Das Android Manifest ist eine XML-Datei, die für jede Android-App erforderlich ist. Sie enthält die App-Konfiguration für verschiedene Einstellungen und Funktionen, die die App verwendet, sowie Details über die App selbst, wie z. B. Paketname, App-Name, Version, usw. Berechtigungen und Hardware-Funktionen können ebenfalls über das Manifest eingestellt 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 benötigt werden.

Qt Projekt zu Manifest Konfiguration

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

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

Dieser würde mit dem Versionscode aufgefüllt, der z.B. in CMake gesetzt ist.

Qt-Standardkonfiguration

Qt setzt standardmäßig die folgende Manifestkonfiguration:

AbschnittOptionBeschreibung
<Manifest>PaketLegt den Paketnamen fest. Der Standardwert ist org.qtproject.example.app_name.

Warnung: Dieses Feld ist veraltet und wurde nach build.gradle verschoben. Es wird in einer der nächsten Versionen entfernt werden.

android:installLocationLegt den Installationsort der App fest, ob interner oder externer 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:VersionsNameSetzt den öffentlichen Versionsnamen. Wird aus ANDROID_VERSION_NAME (qmake) und QT_ANDROID_VERSION_NAME (CMake) übernommen. Der Standardwert ist 1.0.
<supports-screens>Legt die Bildschirmgrößen fest, die die App unterstützt, Standardwerte sind anyDensity, largeScreens, normalScreens und smallScreens.
<Anwendung>android:nameDer Name der Anwendungsklasse. Der Standardwert ist org.qtproject.qt.android.bindings.QtApplication.
android:labelDas Label des Anwendungsnamens. Der Standardwert ist der Zielname des Qt-Projekts.
android:hardwareAcceleratedLegt die Präferenz für die Hardwarebeschleunigung fest. Der Standardwert ist true.
android:requestLegacyExternalStorageLegt fest, ob Android-Speicher verwendet werden soll. Der Standardwert ist true.
android:allowBackupOb die Anwendung an der Sicherungs- und Wiederherstellungsinfrastruktur teilnehmen darf. Wenn dies auf false gesetzt ist, wird keine Sicherung oder Wiederherstellung der Anwendung durchgeführt. Der Standardwert ist true.
android:fullBackupOnlyOb Auto-Backup auf Geräten, auf denen es verfügbar ist, verwendet werden soll oder nicht. Der Standardwert ist false.
<Aktivität>android:nameDer Name der Aktivitätsklasse. Der Standardwert ist org.qtproject.qt.android.bindings.QtActivity.
android:configChangesListet die Konfigurationsänderungen auf, die die Aktivität verarbeitet. Der Standardwert ist orientation, uiMode, screenLayout, screenSize, smallestScreenSize, layoutDirection, locale, fontScale, keyboard, keyboardHidden, navigation, mcc, mnc, density.
android:launchModeDie Methode, die zum Starten der Aktivität verwendet 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:exportiertLegt fest, ob die Aktivität von Komponenten anderer Anwendungen gestartet werden kann. Der Standardwert ist true.

Qt-spezifische Metadaten

Zusätzlich zu der Standard-Manifest-Konfiguration, die Qt setzt, definiert Qt einige Meta-Daten, die nur für Qt-Anwendungen gültig sind. Solche Metadaten befinden sich normalerweise unter dem <activity> Abschnitt im Formular:

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

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

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

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

android.app.extract_android_styleDie Methode, die verwendet wird, um die nativen Android Style Informationen zu extrahieren. Weitere Informationen finden Sie unter Stilextraktion. Der Standardwert ist minimal.
android.app.background_running Legt fest, ob die App weiterhin Aufgaben im Hintergrund ausführt. Die Einstellung true entspricht der Einstellung der Umgebungsvariablen QT_BLOCK_EVENT_LOOPS_WHEN_SUSPENDED auf 0. Der Standardwert ist false.

Warnung: Die Einstellung true kann zu einem unerwarteten Absturz führen, wenn die Anwendung versucht zu zeichnen, nachdem das Signal QGuiApplication::applicationStateChanged() mit einem Qt::ApplicationSuspended Status gesendet wurde.

android.app.arguments Setzt eine Liste von Argumenten, die an die Anwendung "arg1 arg2" übergeben werden. Befüllt von ANDROID_APPLICATION_ARGUMENTS (qmake) und QT_ANDROID_APPLICATION_ARGUMENTS (CMake). Der Standardwert wird nicht gesetzt.
android.app.splash_screen_drawable_portraitSetzt ein Drawable für einen Splashscreen speziell für den Portraitmodus. Zum Beispiel: android:resource="@drawable/splash_portrait". Der Standardwert ist nicht gesetzt.
android.app.splash_screen_drawable_landscapeLegt ein Drawable für einen Startbildschirm fest, der für den Querformatmodus bestimmt ist. Beispiel: android:resource="@drawable/splash_landscape". Der Standardwert ist nicht festgelegt.
android.app.splash_screen_drawableSetzt ein Drawable für einen Splash-Screen beim Start der App.

Hinweis: Orientierungsspezifische Splash-Screens werden zuerst geprüft, wenn sie nicht gesetzt sind, wird stattdessen dieser Wert verwendet. Zum Beispiel: android:resource="@drawable/splash". Der Standardwert ist nicht festgelegt.

android.app.splash_screen_stickyLegt fest, ob der Begrüßungsbildschirm sichtbar bleibt, bis er von der App explizit ausgeblendet wird. Für weitere Informationen siehe QAndroidApplication::hideSplashScreen().
android.app.trace_locationLegt einen Speicherort auf dem Gerät fest, an dem die Anwendung Tracing-Dateien speichern kann. Zum Beispiel: /storage/emulated/0/Android/data/<app_package_name>/files/. Dies ist erforderlich, wenn das Common Trace Format (CTF) Tracing Backend verwendet wird.

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

Anwendungsspezifische Metadaten

Einige Metadaten-Attribute sind anwendungsspezifisch und sollten unter dem Abschnitt <application> platziert werden:

Metadaten NameBeschreibung
android.app.system_libs_prefix Gibt einen benutzerdefinierten Pfad für Systembibliotheken an, der für die Suche nach Bibliotheken verwendet wird. Dies ist notwendig, wenn Qt-Bibliotheken verwendet werden, die außerhalb des standardmäßigen nativen (JNI) Bibliotheksverzeichnisses einer App installiert sind. Der Standardwert ist /system/lib/.

Metadaten in Diensten

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

Qt-Berechtigungen und Funktionen

Verschiedene Qt-Module benötigen möglicherweise einige Android-Berechtigungen oder -Funktionen, um ordnungsgemäß zu funktionieren, z. B. die Kamera-Berechtigung in QtMultimedia. Das androiddeployqt Tool kümmert sich darum, solche Anforderungen während des Builds in das Android-Manifest aufzunehmen. Qt definiert die folgenden Zeilen im Manifest, die dann durch die tatsächlichen Werte ersetzt werden:

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

Hinweis: Wenn diese Zeilen aus dem Projektmanifest entfernt werden, ist Qt nicht in der Lage, die richtigen Berechtigungen einzubinden. Daher könnten einige Funktionalitäten nicht richtig funktionieren.

Berechtigungen anpassen

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

Um dies zu erreichen, können Sie diese Berechtigungen manuell in der Android-Manifestdatei definieren, zusammen mit dem Platzhalter <!-- %%INSERT_PERMISSIONS -->. Manuell definierte Berechtigungen haben Vorrang vor den gleichen, von Qt-Modulen hinzugefügten Berechtigungen, wodurch eine Duplizierung vermieden wird.

Stil-Extraktion

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

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

    Hinweis: Diese Methode verwendet einige Android Nicht-SDK Schnittstellen, die von Google ab Android 9.0 (API 28) eingeschränkt und entfernt werden. Aus diesem Grund wird diese Methode für Android 9.0 oder höher nicht empfohlen.

  • minimalWenn Sie Qt Quick Controls 2 und nicht Qt Widgets oder Qt Quick Controls 1 verwenden. Dies ist schneller als die Verwendung der Standard- oder vollständigen Optionen.
  • none: keine Stilextraktion.

Qt Manifest vor Version 6.2

Versionen von Qt vor 6.2 hatten einen zusätzlichen Satz von Metadaten, die von Qt definiert wurden. Diese Attribute dienten der Verwaltung von Abhängigkeiten und einige wurden von dem eingestellten Ministro Dienst 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_needed_msg
  • android.app.fatal_error_msg

Weitere Informationen über das Android Manifest finden Sie unter Android App Manifest.

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