Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
android-manifest-file-configuration.qdoc
Go to the documentation of this file.
1
// Copyright (C) 2021 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
3
4
/*!
5
\page android-manifest-file-configuration.html
6
\title \Q4A Manifest File Configuration
7
\ingroup androidplatform
8
\brief Provides details on the AndroidManifest.xml configuration.
9
\previouspage android-openssl-support.html
10
\nextpage android-services.html
11
12
The Android Manifest is an XML file necessary for any Android app. It contains
13
app configuration for different settings and features that the app uses, as well
14
as details on the app itself, such as, package name, app name, version, etc.
15
Permissions and hardware features can also be set from the manifest.
16
17
\Q4A maintains a version of \c {AndroidManifest.xml} with default
18
configuration that include features, permissions and other configuration
19
used by the build system which are needed for building and running Qt apps
20
on Android.
21
22
\section1 Qt Project to Manifest Configuration
23
24
Qt defines some \l {Android: App Manifest <meta-data>}{meta-data} that is passed
25
from the build systems and to \l {Deploying an Application on Android}{androiddeployqt}
26
which populates the manifest with the correct values without explicitly setting
27
these in the manifest file. Such \l {Android: App Manifest <meta-data>}{meta-data}
28
is assigned a value in the form \c {"-- %%INSERT_VALUE%% --"}, for example:
29
30
\badcode
31
<manifest ...
32
android:versionCode="-- %%INSERT_VERSION_CODE%% --"
33
...
34
</manifest>
35
\endcode
36
37
This would be populated with the version code that is set in, for example,
38
\c CMake.
39
40
\section1 Qt Default Configuration
41
42
Qt sets the following manifest configuration by default:
43
44
\table
45
\header
46
\li Section
47
\li Option
48
\li Description
49
\row
50
\li {1, 5} \l {Android: App Manifest <manifest>}{<manifest>}
51
\li package
52
\li Sets the package name. The default value is \c {org.qtproject.example.app_name}.
53
\warning This field is deprecated and moved to \c build.gradle. It will be removed
54
in an upcoming release.
55
\row
56
\li android:installLocation
57
\li Sets the app's installation location, whether internal or external storage.
58
The default value is \c auto.
59
\row
60
\li android:versionCode
61
\li Sets the internal version code. Populated from \c ANDROID_VERSION_CODE (qmake)
62
and \c QT_ANDROID_VERSION_CODE (CMake). The default value is \c 1.
63
\row
64
\li android:versionName
65
\li Sets the public version name. Populated from \c ANDROID_VERSION_NAME (qmake)
66
and \c QT_ANDROID_VERSION_NAME (CMake). The default value is \c {1.0}.
67
\row
68
\li <supports-screens>
69
\li Sets the screen sizes that the app supports,
70
default values are \c anyDensity, \c largeScreens,
71
\c normalScreens, and \c smallScreens.
72
\row
73
\li {1, 7} \l {Android: App Manifest <application>}{<application>}
74
\li android:name
75
\li The application class name. Default value is
76
\c {org.qtproject.qt.android.bindings.QtApplication}.
77
\row
78
\li android:label
79
\li The application name label. Default value is the Qt project's target name.
80
This can be set using \l {QT_ANDROID_APP_NAME}.
81
\row
82
\li android:icon
83
\li The application icon as a reference to a drawable or mipmap resource. This
84
tag is not used unless set using \l {QT_ANDROID_APP_ICON} or set manually
85
in the \c {AndroidManifest.xml}.
86
\row
87
\li android:hardwareAccelerated
88
\li Sets hardware acceleration preference. The default value is \c true.
89
\row
90
\li android:requestLegacyExternalStorage
91
\li Whether to use Android scoped storage. The default value is \c true.
92
\row
93
\li android:allowBackup
94
\li Whether to allow the application to participate in the backup and restore
95
infrastructure. If this is set to \c false, no backup or restore of the
96
application will ever be performed. The default value is \c true.
97
\row
98
\li android:fullBackupOnly
99
\li Whether or not to use Auto Backup on devices where it is available.
100
The default value is \c false.
101
\row
102
\li {1, 6} \l {Android: App Manifest <activity>}{<activity>}
103
\li android:name
104
\li The activity class name. The default value is \c {org.qtproject.qt.android.bindings.QtActivity}.
105
\row
106
\li android:configChanges
107
\li Lists configuration changes that the activity handles. Default value is
108
\c orientation, \c uiMode, \c screenLayout, \c screenSize,
109
\c smallestScreenSize, \c layoutDirection, \c locale, \c fontScale,
110
\c keyboard, \c keyboardHidden, \c navigation, \c mcc, \c mnc, \c density.
111
\row
112
\li android:launchMode
113
\li The method used to launch the activity. The default value is \c singleTop.
114
\row
115
\li android:screenOrientation
116
\li The orientation of the activity's display on the device. The default value is \c unspecified.
117
\row
118
\li <intent-filter>
119
\li Specifies the types of intents that the activity can respond to. Default value is
120
\badcode
121
<action android:name="android.intent.action.MAIN"/>
122
<category android:name="android.intent.category.LAUNCHER"/>
123
\endcode
124
\row
125
\li android:exported
126
\li Sets whether the activity can be launched by components of other applications.
127
The default value is \c true.
128
\endtable
129
130
\target android-manifest-qt-specific-metadata
131
\section1 Qt Specific Meta-data
132
133
In addition to the default manifest configuration that Qt sets, Qt defines
134
some meta-data that is valid for Qt apps only. Such meta-data is usually
135
under the \c <activity> section in the form:
136
137
\badcode
138
<meta-data
139
android:name="meta-data-name"
140
android:value="meta-data-value" />
141
\endcode
142
143
The following is a list of such meta-data defined by Qt:
144
145
\table
146
\header
147
\li Meta-data Name
148
\li Description
149
\row
150
\li android.app.lib_name \target android.app.lib_name
151
\li The filename of the native C++ library that is used by the activity.
152
\note This attribute is mandatory and shouldn't be removed.
153
Default value is the Qt project's target name.
154
\row
155
\li android.app.extract_android_style
156
\li The method used to extract the native Android Style information.
157
For more information, see \l {Style Extraction}.
158
The default value is \c minimal.
159
\row
160
\li android.app.background_running \target android.app.background_running
161
\li Sets whether the app keeps running tasks in the background.
162
Setting this to \c true is the equivalent of setting the environment
163
variable \c QT_BLOCK_EVENT_LOOPS_WHEN_SUSPENDED to \c 0.
164
The default value is \c false.
165
166
\warning Setting this to \c true may cause unexpected crash if the
167
application tries to draw after \l {QGuiApplication::applicationStateChanged()}
168
signal is sent with a \l {Qt::ApplicationSuspended} state.
169
\row
170
\li android.app.arguments \target android.app.arguments
171
\li Sets a list of arguments to pass to the app \c {"arg1 arg2"}.
172
Populated from \c ANDROID_APPLICATION_ARGUMENTS (qmake) and
173
\c QT_ANDROID_APPLICATION_ARGUMENTS (CMake).
174
Default value is not set.
175
\row
176
\li android.app.splash_screen_drawable_portrait
177
\li Sets a drawable for a splash screen specific to portrait mode.
178
For example: \c {android:resource="@drawable/splash_portrait"}.
179
Default value is not set.
180
\row
181
\li android.app.splash_screen_drawable_landscape
182
\li Sets a drawable for a splash screen specific to landscape mode.
183
For example: \c {android:resource="@drawable/splash_landscape"}.
184
Default value is not set.
185
\row
186
\li android.app.splash_screen_drawable
187
\li Sets a drawable for a splash screen at the start of the app.
188
\note Orientation specific splash screens are checked first,
189
if not set, this is used instead.
190
For example: \c {android:resource="@drawable/splash"}.
191
Default value is not set.
192
\row
193
\li android.app.splash_screen_sticky
194
\li Sets whether the splash screen stays visible until explicitly hidden
195
by the app.
196
For more information, see
197
\l {QNativeInterface::}{QAndroidApplication::hideSplashScreen()}.
198
\row
199
\li android.app.trace_location
200
\li Specifies a location on device where the application can save tracing files.
201
For example: /storage/emulated/0/Android/data/<app_package_name>/files/.
202
This is needed when using Common Trace Format (CTF) tracing backend.
203
\note The application needs storage permission for the location.
204
Default: not set.
205
\endtable
206
207
\section2 Application Specific Meta-data
208
209
Some meta-data attributes are application-wide, and should be placed under
210
the \c <application> section:
211
212
\table
213
\header
214
\li Meta-data Name
215
\li Description
216
\row
217
\li android.app.system_libs_prefix \target android.app.system_libs_prefix
218
\li Specifies a custom system library path to use for library loading lookup.
219
This is necessary when using Qt libraries installed outside an app's
220
default native (JNI) library directory.
221
The default value is \c {/system/lib/}.
222
\endtable
223
224
\section2 Meta-data in Services
225
226
Some meta-data attributes can also be used in \l {Android Services}{Services}.
227
The main ones are:
228
229
\list
230
\li \l {android.app.lib_name}
231
\li \l {android.app.background_running}
232
\li \l {android.app.arguments}
233
\endlist
234
235
\section2 Qt Permissions and Features
236
237
Different Qt modules might require some Android permissions or features to
238
function properly, for example, Camera permission in \l {QtMultimedia}.
239
\l{The androiddeployqt Tool} takes care of including such requirements into the
240
Android manifest during the build. Qt defines the following lines into the
241
manifest, which they get replaced by
242
the actual values:
243
244
\badcode
245
<manifest ...
246
<!-- %%INSERT_PERMISSIONS -->
247
<!-- %%INSERT_FEATURES -->
248
...
249
</manifest>
250
\endcode
251
252
\note If those lines are removed from the project manifest, Qt won't be
253
able to include the correct permissions. So some functionalities
254
might not work properly.
255
256
\section3 Customizing Permissions
257
258
Since Qt 6.8.1, it is possible to override the default permissions set
259
by Qt modules. This is useful if you need to define the same permissions
260
as used by a Qt module, but with additional or different attributes.
261
262
There are two ways to achieve this. First way is to use
263
\l {qt_add_android_permission} CMake function in the application's
264
\c {CMakeLists.txt}. Permissions defined this way take precedence over
265
the same permissions defined by Qt modules, avoiding duplication.
266
267
Second way is to manually define these permissions in the Android
268
manifest file. Permissions defined this way take precedence over permissions
269
set by Qt modules, or set with \l {qt_add_android_permission}.
270
271
\section2 Style Extraction
272
273
Qt uses different methods to determine how Qt Widgets and Qt Quick Controls
274
should be styled:
275
276
\list
277
\li \c full: when using Qt Widgets or Qt Quick Controls 1.
278
\note This method is obsolete as it uses some Android non-SDK interfaces, that were
279
restricted by Google starting from Android 9.0 (API 28). You should use one of the other methods.
280
\li \c default or \c minimal: when using Qt Quick Controls 2 and no Qt Widgets or Qt Quick
281
Controls 1. This is faster than using the default or full options.
282
\li \c none: no style extraction.
283
\endlist
284
285
\section1 Qt Manifest before 6.2 Release
286
287
Versions of Qt earlier than 6.2 used to have an additional set of meta-data
288
defined by Qt. These attributes used to manage dependencies and some were
289
used by the discontinued \c Ministro service. With Qt 6.2, they should be removed.
290
Here is a list of these attributes:
291
292
\list
293
\li android.app.qt_sources_resource_id
294
\li android.app.repository
295
\li android.app.bundled_libs_resource_id
296
\li android.app.bundle_local_qt_libs
297
\li android.app.use_local_qt_libs
298
\li android.app.libs_prefix
299
\li android.app.load_local_libs_resource_id
300
\li android.app.load_local_jars
301
\li android.app.static_init_classes
302
\li android.app.qt_libs_resource_id
303
\li android.app.ministro_not_found_msg
304
\li android.app.ministro_needed_msg
305
\li android.app.fatal_error_msg
306
\endlist
307
308
For more information on the Android Manifest, see
309
\l{Android: App Manifest}{Android App Manifest}.
310
*/
qtbase
src
android
templates
doc
src
android-manifest-file-configuration.qdoc
Generated on
for Qt by
1.14.0