Wenn es an der Zeit ist, die Entwicklung von Android auf Qt zu leiten, kommen wir früher oder später zu der Notwendigkeit, mit der Datei AndroidManifest.xml zu arbeiten. In dieser Datei haben wir die Möglichkeit, bestimmte Grundeinstellungen für das Verhalten unserer Anwendung festzulegen, wie z. B. die Ausrichtung des Bildschirms oder das Hauptthema der Anwendung.
Das standardmäßige Android-Manifest in Qt Creator wird jedoch nicht erstellt. Um mit ihm zu arbeiten, muss es in den Projekterstellungsoptionen erstellt werden.
Schritt für Schritt mit dem Android Manifest
Erster Schritt
Gehen Sie dazu auf die Registerkarte Projekte und darin finden wir den erforderlichen Bausatz. Wählen Sie Build und suchen Sie darin den Artikel Collect Android APK. Razvernёm dieses Element durch Klicken auf "Weiterlesen".
Hier können Sie die Zielebene des SDK auswählen und das APK-Building konfigurieren.
Zweiter Schritt
Um die AndroidManifest.xml-Datei zu erstellen, müssen Sie jedoch auf die Schaltfläche „Vorlage erstellen“ klicken. Wählen Sie dann den Ordner aus, in dem das Android-Manifest erstellt wird.
Der dritte Schritt
Die Projektstruktur sehen Sie in der Datei AndroidManifest.xml. Und rechts von der Struktur ist die Einrichtung der Datei geöffnet. Hier können Sie das mindestens erforderliche Geräte-SDK festlegen, auf dem die Installation durchgeführt wird, sowie das Symbol der Anwendung festlegen und die erforderlichen Berechtigungen für die Anwendung hinzufügen. Zum Beispiel Anrufe, Internetzugang, Arbeiten mit WLAN usw.
Vierter Schritt
Nachdem Sie die grundlegenden Parameter der Anwendung eingerichtet haben, schlage ich vor, sich den XML-Dateicode anzusehen, der QtCreator generiert hat. Dieser Code ähnelt dem Code, den Sie in AndroidManifst.xml sehen, wenn Sie eine Anwendung für Android in Java entwickeln. Daher ähnelt das Setzen der Datei der Entwicklung einer Java. Und zum Beispiel sieht die Einstellung der fikisrovannoy-Ausrichtung des Bildschirms wie folgt aus:
<activity ... android:screenOrientation="landscape" > ... </activity>
Nun, der vollständige Code des resultierenden Android-Manifests I sah so aus.
<?xml version="1.0"?> <manifest package="org.qtproject.example" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="1.0" android:versionCode="1" android:installLocation="auto"> <application android:hardwareAccelerated="true" android:name="org.qtproject.qt5.android.bindings.QtApplication" android:label="-- %%INSERT_APP_NAME%% --"> <activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|layoutDirection|locale|fontScale|keyboard|keyboardHidden|navigation" android:name="org.qtproject.qt5.android.bindings.QtActivity" android:label="-- %%INSERT_APP_NAME%% --" android:screenOrientation="unspecified" android:launchMode="singleTop"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> <meta-data android:name="android.app.lib_name" android:value="-- %%INSERT_APP_LIB_NAME%% --"/> <meta-data android:name="android.app.qt_sources_resource_id" android:resource="@array/qt_sources"/> <meta-data android:name="android.app.repository" android:value="default"/> <meta-data android:name="android.app.qt_libs_resource_id" android:resource="@array/qt_libs"/> <meta-data android:name="android.app.bundled_libs_resource_id" android:resource="@array/bundled_libs"/> <!-- Deploy Qt libs as part of package --> <meta-data android:name="android.app.bundle_local_qt_libs" android:value="-- %%BUNDLE_LOCAL_QT_LIBS%% --"/> <meta-data android:name="android.app.bundled_in_lib_resource_id" android:resource="@array/bundled_in_lib"/> <meta-data android:name="android.app.bundled_in_assets_resource_id" android:resource="@array/bundled_in_assets"/> <!-- Run with local libs --> <meta-data android:name="android.app.use_local_qt_libs" android:value="-- %%USE_LOCAL_QT_LIBS%% --"/> <meta-data android:name="android.app.libs_prefix" android:value="/data/local/tmp/qt/"/> <meta-data android:name="android.app.load_local_libs" android:value="-- %%INSERT_LOCAL_LIBS%% --"/> <meta-data android:name="android.app.load_local_jars" android:value="-- %%INSERT_LOCAL_JARS%% --"/> <meta-data android:name="android.app.static_init_classes" android:value="-- %%INSERT_INIT_CLASSES%% --"/> <!-- Messages maps --> <meta-data android:value="@string/ministro_not_found_msg" android:name="android.app.ministro_not_found_msg"/> <meta-data android:value="@string/ministro_needed_msg" android:name="android.app.ministro_needed_msg"/> <meta-data android:value="@string/fatal_error_msg" android:name="android.app.fatal_error_msg"/> <!-- Messages maps --> <!-- Splash screen --> <!-- <meta-data android:name="android.app.splash_screen_drawable" android:resource="@drawable/logo"/> --> <!-- Splash screen --> <!-- Background running --> <!-- Warning: changing this value to true may cause unexpected crashes if the application still try to draw after "applicationStateChanged(Qt::ApplicationSuspended)" signal is sent! --> <meta-data android:name="android.app.background_running" android:value="false"/> <!-- Background running --> </activity> </application> <uses-sdk android:targetSdkVersion="14"/> <supports-screens android:largeScreens="true" android:normalScreens="true" android:anyDensity="true" android:smallScreens="true"/> <!-- The following comment will be replaced upon deployment with default permissions based on the dependencies of the application. Remove the comment if you do not require these default permissions. --> <!-- %%INSERT_PERMISSIONS --> <!-- The following comment will be replaced upon deployment with default features based on the dependencies of the application. Remove the comment if you do not require these default features. --> <!-- %%INSERT_FEATURES --> </manifest>
Fazit
Das Arbeiten mit Qt unter AndroidManifest.xml hat seine eigenen Besonderheiten, aber es unterscheidet sich immer noch nicht so sehr davon, als ob wir in Java entwickeln würden.
Sie können sich auch ein Profilprojekt ansehen. Darin sehen Sie, wie das Projekt mit Ihrem Android-Manifest verbunden ist.