User:Joger/Building Qt Multimedia for Android
About this page
On this page, I describe how I build Qt for my Android device, which is a Samsung Galaxy S6. I work primarily with Qt Multimedia. I therefore need a build setup that makes it easy to debug, run tests, and examples from within an IDE without spending too much time on reconfiguring and rebuilding all of Qt. This tutorial follows the steps from the official Qt documentation at Qt for Android - Building from Source | Qt 6.7. In addition, I show how to configure Qt as a separate submodule to reduce the need for reconfiguring and rebuilding all of Qt.
My build setup
- OS: Windows 11 with dev drive mounted on K: (Using a dev drive makes builds faster when using Windows Defender antivirus)
- Qt source tree: K:\qt\android\qt6
- Build directory main Android build: K:\qt\android\android
- Main (host) build for dev branch: K:\qt\android\host
- Visual Studio 2022 (MSVC)
- Don't have perl in path as it can cause hard to understand build failures
- Have cmake in path
Setting up Android SDK/NDK and JAVA
- Install Qt Creator with Android option using Qt Maintenance Tool
- In Creator preferences, install Adoptium JDK (C:\Program Files\Eclipse Adoptium\jdk-17.0.10.7-hotspot)
- Android SDK location: C:\Utils\Android
- Select Android NDK 26.1.10909125 and make default
- Oppenssl location: C:\Utils\Android\android_openssl
- Verify Android settings:
- Add Android device for ABI x86_64, OS Version 13.0 ("Tiramisu") (SDK 33)
Install MINGW
Run provisioning script from "K:\qt\android\qt6\coin\provisioning\common\windows\install-mingw.ps1" as administrator. This installs MINGW into C:\MINGW_PATH.
Creating Qt Host Build
Follow steps in https://doc.qt.io/qt-6/android-building.html to create a host build.
Clone Qt source code
K:\qt\Android> git clone git://code.qt.io/qt/qt5.git qt6
Initialize Qt submodules and configure the host build
K:\qt\Android\host> ..\qt6\configure -developer-build -nomake tests -nomake examples -submodules qtmultimedia -init-submodules -codereview-username <gerrit username>
Build the host build
K:\qt\Android\host> cmake --build . --target host_tools --parallel
Building Qt for Android on Windows
This build setup works with my Samsung Galaxy S6 tablet
Enable the MINGW compiler suite
set MINGW_ROOT=C:\MINGW_PATH\mingw64\bin set PATH=%MINGW_ROOT%;%PATH%
Configure Qt for cross compile with Android using the host host build from K:\qt\android\host\qtbase.
K:\qt\Android\android> ..\qt6\configure -debug -developer-build -qt-host-path K:\qt\android\host\qtbase -android-abis arm64-v8a -android-sdk C:\utils\android\ -android-ndk C:\utils\android\ndk\26.1.10909125\ -submodules qtmultimedia -nomake tests -nomake examples && ninja.exe
Build
K:\qt\Android\android> ninja
Configure QtMultimedia module for cross compiling with Android
When working with QtMultimedia, it is convenient to configure a separate build just for this submodule. This makes configuring and rebuilding faster as long as we only touch code in this submodule.
K:\qt\android\qtmultimedia> ..\android\qtbase\bin\qt-configure-module.bat ..\qt6\qtmultimedia -- -DQT_BUILD_TESTS=ON -DQT_BUILD_EXAMPLES=ON -DQT_BUILD_TESTS_BY_DEFAULT=OFF -DQT_BUILD_EXAMPLES_BY_DEFAULT=OFF -DQT_BUILD_EXAMPLES_AS_EXTERNAL=OFF
Importing Qt Multimedia build into QtCreator
- Open QtMultimedia CMakeLists.txt from D:\qt\qt6\qtmultimedia
- Deselect all kits
- Import build from K:\qt\android\qtmultimedia
- This creates a Android Qt 6.9.0 (android) Clang arm64-v8a
- Press 'Configure' button
- Connect the Android device and go to Edit->Preferences->Devices, select Android tab, and make sure that configuration does not show any errors.
- Select the project to build, and make sure the correct Android device is selected