Android: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
(Fix formatting)
(Add note about 32 bit runtime environment requirement)
Line 24: Line 24:
# You also need an Android NDK: https://developer.android.com/tools/sdk/ndk/index.html
# You also need an Android NDK: https://developer.android.com/tools/sdk/ndk/index.html
#* '''Important:''' Download and use NDK r10. This is because NDK r11, r12 and r15 are known to have issues<ref name="known-issues">[[Qt for Android known issues| Known issues with the Qt for Android build]]</ref>. NDK r13 and r14 are also likely to have the same issues. r15 produces applications that fail with the error message 'This application failed to start because it could not find or load the Qt platform plugin "android"'.
#* '''Important:''' Download and use NDK r10. This is because NDK r11, r12 and r15 are known to have issues<ref name="known-issues">[[Qt for Android known issues| Known issues with the Qt for Android build]]</ref>. NDK r13 and r14 are also likely to have the same issues. r15 produces applications that fail with the error message 'This application failed to start because it could not find or load the Qt platform plugin "android"'.
# Download a 32 bit JDK whose version is at least 1.6.
# Install a 32 bit JDK whose version is at least 1.6. If you're on a 64 bit Ubuntu/Debian, you may also need to install a 32 bit runtime environment:
#:<pre>apt-get install libc6-i386</pre>
# Get Qt Creator 2.7.2 (or later): http://qt.io/download#qt-creator
# Get Qt Creator 2.7.2 (or later): http://qt.io/download#qt-creator
# Get Qt 5:
# Get Qt 5:

Revision as of 09:41, 14 May 2018

These are build instructions for building Qt for Android on Linux or Mac OS X. For cross-compiling on Windows, this is currently possible under cmd.exe.

For general information about Qt 5 for Android, please visit the wiki for that.

N.B.

  • When using GCC toolchains on Windows (MinGW, Android NDK, etc.) take into account that there is a restrictions on a build path prefix length QTBUG-52242.
  • When using MSys shell you should not pass Unix-like paths in -prefix argument QTBUG-52675

Building Qt 5 for Android

These are the current build instructions to get to the point where you can deploy a Qt app to an Android device using Qt Creator.

  1. First of all you need an Android SDK.
    • The SDK is bundled with Android Studio: https://developer.android.com/studio/index.html
    • Open Android Studio and run the SDK Manager tool, which is found under Tools > Android > SDK Manager.
    • For Qt 5.6 or earlier: Install API levels 10, 11, 16 and 18 (you may need to check the "Obsolete" checkbox to see these in the SDK manager). Beginning with Qt 5.7, any API level >= 18 will work.
      • Android API level 11 is required to build QtMultimedia.
      • Android API level 18 is required to build QtBluetooth (from Qt 5.5 onwards).
      • Android API level 10, 11 and 16 are required for QtBase.
      • Note that this is only necessary for building Qt itself. You can build Qt applications against any API level you wish, As long as it is equal to or higher than 13.
  2. You also need an Android NDK: https://developer.android.com/tools/sdk/ndk/index.html
    • Important: Download and use NDK r10. This is because NDK r11, r12 and r15 are known to have issues[1]. NDK r13 and r14 are also likely to have the same issues. r15 produces applications that fail with the error message 'This application failed to start because it could not find or load the Qt platform plugin "android"'.
  3. Install a 32 bit JDK whose version is at least 1.6. If you're on a 64 bit Ubuntu/Debian, you may also need to install a 32 bit runtime environment:
    apt-get install libc6-i386
  4. Get Qt Creator 2.7.2 (or later): http://qt.io/download#qt-creator
  5. Get Qt 5:
    git clone git://code.qt.io/qt/qt5.git qt5
    cd qt5
    perl init-repository
  6. Optionally checkout target Qt version to use.
    git checkout v5.9.3
    git submodule update --recursive
  7. Configure Environment Variables.
    • You need to set JAVA_HOME and add JAVA_HOME/bin to your PATH. On Linux, a good place to do this is at the end of ~/.profile:
    export JAVA_HOME=/usr/lib/jvm/java-6-openjdk-i386
    export PATH=$PATH:$JAVA_HOME/bin
  8. Configure Qt and skip unsupported modules:
    ./configure -xplatform android-g++ --disable-rpath -nomake tests -nomake examples -android-ndk <path/to/ndk> -android-sdk <path/to/sdk> -android-ndk-host <e.g. linux-x86_64> -android-toolchain-version <e.g. 4.9> -skip qttranslations -skip qtserialport -no-warnings-are-errors
  9. Build. Run the make command to build the configured Qt parts.
    make
  10. Install. Run the make install command to install the built Qt parts. If you have not used the configure option --prefix <install-dir> the installation is done under the directory path /usr/local/Qt-<version>. Under Debian/Ubuntu you yould prefix the make commd with the sudo command.
    make install
  11. Start the Qt Creator you built earlier.
  12. Go into Tools-> Options -> Android and set the right paths to the Android SDK and NDK, etc. For example:
    • Android SDK Location: /home/johnsmith/dev/android-sdk-linux
    • Android NDK Location: /home/johnsmith/dev/android-ndk-r10e
    • JDK Location: /usr/lib/jvm/java-6-openjdk-i386
  13. Add your newly built Qt version to Options -> Build & Run -> Qt Versions.
  14. At this point you should be able to create a project and configure it for the Android kit. In order to test, go into the Run settings for your project. Under Deploy Configuration, check the Use Qt libraries from local device option. Also select the Deploy local Qt libraries radio button.

References