Contents
- Creating Distributable APK Packages
- Using Ministro to Install Qt Libraries
- Deploying Qt Libraries for Debugging
- Packaging Qt 4 Applications
- Specifying Settings for Qt 4 Packages
- Selecting API Level
- Selecting Qt Libraries
- Signing Android Packages
- Packaging Qt 5 Applications
- Specifying Settings for Qt 5 Packages
- Selecting API Level
- Signing Android Packages
- Adding External Libraries
- Installing Ministro
- Editing Manifest Files
Deploying Applications to Android Devices
On Android, applications are distributed in specially structured type of ZIP packages called APK. Qt Creator supports the following methods of deployment for Android applications:
- As a stand-alone, distributable application package (APK).
- As a minimal APK that contains a dependency to the Ministro tool. The Ministro tool downloads the necessary Qt libraries from a repository of your choice.
- As an incomplete APK that is suitable for testing and debugging applications on a device connected to the development host. The APK relies on the device containing the Qt libraries in the correct location. Qt Creator copies the libraries to that location the first time you deploy the application.
The default option depends on whether you are developing with Qt 4 or Qt 5. The Necessitas SDK does not support bundling Qt libraries with applications, so you must use Ministro when developing with Qt 4. To specify the deployment method, select Projects > Run > Deploy configurations > Details
Creating Distributable APK Packages
To copy Qt libraries and files to the project directory and to bundle them as part of the APK, select the Bundle Qt libraries in APK option. This is the default option when developing with Qt 5. It is not supported when developing with Qt 4.
Using Ministro to Install Qt Libraries
To minimize the size of your APK, you can package the application with an external dependency called Ministro. If a user downloads your application, and it is the first application on their device to depend on Ministro, they are asked to install Ministro before they can run your application.
Ministro serves as a central repository for Qt libraries. This enables several applications to share the libraries, which only need to be installed once. To use this deployment method, you must set up a repository for the libraries that you want to distribute. To specify the repository URL, edit the file android/res/values/libs.xml, which is created by Qt Creator.
To use Ministro to install the Qt libraries, select the Use Ministro service to install Qt option.
This is the default option when developing with Qt 4.
Deploying Qt Libraries for Debugging
To test your application on a device that is physically connected to the development host (or on an emulator), you can copy the Qt libraries into a temporary directory on your device and run the application against them.
An APK built in this way is not distributable, since it relies on the device containing the Qt libraries in the correct location. However, as the Qt libraries are only copied into the device once, this method provides a fast turn-around time, and is therefore convenient for testing the application during development.
Select the Deploy local Qt libraries to temporary directory option to deploy Qt libraries to the /data/local/tmp/qt folder on the device and to run the application against them.
To deploy new Qt libraries to the device, select Clean Temporary Libraries Directory on Device. The next time you deploy the application, Qt libraries are copied to the device again.
Packaging Qt 4 Applications
When you select a Qt for Android Kit that specifies Qt 4 for a project, Qt Creator creates and maintains a set of files that are required to make your application run on Android devices.
Qt Creator adds the following files to your project:
- Java files, which serve as the entry point into your application and that automatically load Qt and execute the native code in your application.
- AndroidManifest.xml, which provides meta-information about your application.
- Other XML files, which specify the dependencies of your application.
- Resource files.
- Libraries and QML files, which can be included in the project depending on the deployment method that you select.
Qt Creator adds the files to the project to a subdirectory called android. The contents of the android folder are used to create a distributable application package.
To view the packages that Qt Creator created, select the Open package location after is complete check box.
To specify information for the Android manifest file, open it in Qt Creator. For more information, see Editing Manifest Files.
Specifying Settings for Qt 4 Packages
To configure Android packages, select Projects > Run > Package configurations > Details. The Android system uses the information from the file to start application components.

Selecting API Level
In the Android target SDK field, you can select the API level to use for building the application. Usually, you should select the newest API level available.
This field does not specify the minimum supported API level nor the target API level, which you can specify in the Android manifest file. For more information about Android API levels, see What is API Level?.
Selecting Qt Libraries
In the Libraries group, specify which Qt libraries the application uses. To automatically determine this, select Read Information from Application (Must Be Compiled). Alternatively, you can manually select the Qt libraries and the external libraries you think your application needs. Make sure to arrange the libraries so that depended libraries appear before the ones that depend on them.
These entries are used by the Ministro tool to determine which Qt libraries to download.
In addition, the Java Loader uses this list to determine which Qt Libraries and other prebundled libraries to load with your application.
Signing Android Packages
In the Sign Package group you can sign the Android package by using a private key from the keystore. To create new keys, select Create.

Packaging Qt 5 Applications
Because bundling applications as APK packages is not trivial, Qt 5 provides a deployment tool called androiddeployqt. When you deploy an application using a Qt for Android Kit, Qt Creator uses the androiddeployqt tool to create the necessary files and to bundle them into an APK.
To view the packages that the androiddeployqt tool created, select the Open package location after build check box.
The packages are deployed on the connected Android devices. To switch the device used as a default device for the selected kit, select Reset Default Devices. The setting applies until you restart Qt Creator. For more information, see Selecting Android Devices.
For more information about the androiddeployqt tool, see Deploying an Application on Android.
Specifying Settings for Qt 5 Packages
You can specify settings for the androiddeployqt tool in Qt Creator and in the project .pro file. To specify settings in Qt Creator, select Projects > Run > Deploy configurations > Details.

The anddroiddeployqt tool uses the information in the project .pro file to create APKs. For more information about the qmake variables that you can set in the .pro file to tailor the APK, see qmake Variables.
You can view information about what the anddroiddeployqt tool is doing in the Compile Output pane. To view additional information, select the Verbose output check box.
Selecting API Level
In the Android target SDK field, you can select the API level to use for building the application. Usually, you should select the newest API level available.
This field does not specify the minimum supported API level nor the target API level, which you can specify in the Android manifest file. For more information about Android API levels, see What is API Level?.
Signing Android Packages
In the Sign Package group you can sign the Android package by using a private key from the keystore. To create new keys, select Create.
Adding External Libraries
Qt Creator automatically detects which Qt libraries the application uses and adds them as dependencies. If the application needs external libraries, specify them in the Additional Libraries field. The libraries are copied into your application's library folder and loaded on startup.
For example, to enable OpenSSL in your application, add the paths to the required libssl.so and libcrypto.so libraries to the Additional Libraries field.
Installing Ministro
The easiest way to install Ministro is to do it on the device via Google Play. When you run the application for the first time, a dialog pops up and guides you through the installation.
To use Qt Creator to install Ministro, you must first download the Ministro .apk from the Google Market or from the Ministro home page.
Then select Install Ministro from APK.
You can use this option also to install any Android package (.apk).
You can use this option to install applications on an Android Virtual Device (AVD).
Editing Manifest Files
When you develop with Qt 4, Qt Creator creates the Android manifest file for you, and you can open it for editing in the Android Manifest Editor.
When you develop with Qt 5, you can use the qmake variables to specify all the settings you need for the androiddeployqt tool and you do not need an Android manifest file until you want to publish the package in an application store. To specify additional settings for APK packages, you can create an Android manifest file and edit it in Qt Creator. Select Create AndroidManifest.xml to create the file and to open it in the Android Manifest Editor.

Select the XML Source tab to edit the file in XML format.
In the Package name field, enter a package name for the application. The application is launched by an automatically generated Java launcher that is packaged with the application into an Android package (.apk). For more information, see Android Application Fundamentals.
You can specify an internal version number for the package in the Version code field. It is used to determine whether one version of the application is more recent than another. In the Version name field, specify the version number that is shown to users.
In the Minimum required SDK field, select the minimum API level required to run the application. The minimum API level is android-4 for Necessitas and android-9 for Qt 5. Qt Creator does not allow you to select an API level that the Qt version specified for the kit does not support.
Note: The android-4 API level does not support multitouch. If your application needs multitouch, select a higher API level.
In the Target SDK field, select the targeted API level of the application. This affects the activation of some compatibility features in the OS. The value used by the androiddeployqt tool by default is 14, which means that the overflow button in the system navigation bar will not be enabled by default.
In the Application group, you can give the application a name and select an icon for it. The three icon fields can contain different versions of the icon with low, medium, and high DPI values, from left to right.
In the Permissions field, you can specify the permissions that your application needs. Users are asked to grant the permissions when they install the application. Android OS then grants the application access to the appropriate data and features.
To add permissions, select Add and select permissions from the list.