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:
Abschnitt | Option | Beschreibung |
---|---|---|
<Manifest> | Paket | Legt den Paketnamen fest. Der Standardwert ist org.qtproject.example.app_name .Warnung: Dieses Feld ist veraltet und wurde nach |
android:installLocation | Legt den Installationsort der App fest, ob interner oder externer Speicher. Der Standardwert ist auto . | |
android:versionCode | Legt den internen Versionscode fest. Wird aus ANDROID_VERSION_CODE (qmake) und QT_ANDROID_VERSION_CODE (CMake) übernommen. Der Standardwert ist 1 . | |
android:VersionsName | Setzt 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:name | Der Name der Anwendungsklasse. Der Standardwert ist org.qtproject.qt.android.bindings.QtApplication . |
android:label | Das Label des Anwendungsnamens. Der Standardwert ist der Zielname des Qt-Projekts. | |
android:hardwareAccelerated | Legt die Präferenz für die Hardwarebeschleunigung fest. Der Standardwert ist true . | |
android:requestLegacyExternalStorage | Legt fest, ob Android-Speicher verwendet werden soll. Der Standardwert ist true . | |
android:allowBackup | Ob 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:fullBackupOnly | Ob Auto-Backup auf Geräten, auf denen es verfügbar ist, verwendet werden soll oder nicht. Der Standardwert ist false . | |
<Aktivität> | android:name | Der Name der Aktivitätsklasse. Der Standardwert ist org.qtproject.qt.android.bindings.QtActivity . |
android:configChanges | Listet 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:launchMode | Die Methode, die zum Starten der Aktivität verwendet wird. Der Standardwert ist singleTop . | |
android:screenOrientation | Die 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:exportiert | Legt 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 Name | Beschreibung |
---|---|
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_style | Die 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 |
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_portrait | Setzt 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_landscape | Legt 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_drawable | Setzt 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.app.splash_screen_sticky | Legt 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_location | Legt 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 Name | Beschreibung |
---|---|
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
oderfull
: 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.
minimal
Wenn 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.