Android/Environment: Difference between revisions

From KDE Community Wiki
(Moved from general Android page)
 
No edit summary
 
(4 intermediate revisions by one other user not shown)
Line 21: Line 21:
#** Android SDK Build-tools (22.0.1)
#** Android SDK Build-tools (22.0.1)
#** Android 5.1.1 (API 22): SDK Platform (only "SDK Platform" needed, i.e. no docs, samples or sources)
#** Android 5.1.1 (API 22): SDK Platform (only "SDK Platform" needed, i.e. no docs, samples or sources)
#** sys-img-armeabi-v7a-android-22 (required for emulator and unit tests)
#* result: now the SDK should be installed in /opt/android/android-sdk-linux
#* result: now the SDK should be installed in /opt/android/android-sdk-linux
# Android NDK
# Android NDK

Latest revision as of 21:56, 19 May 2020

Setup Environment for KDE on Android Development

In the following, we explain how to setup a build environment on a Linux system to be able to compile Qt and in particular KF5-based application for Android.

Prerequisites / Setup of Cross-Compiling Build System

At first we prepare your system with all necessary packages to build your application for Android. For this tutorial we assume that everything is done in the folder /opt/android/ (you can adapt the tutorial accordingly when using another folder).

  1. Some 32 bit system libraries are required for the host system (because some tools are 32 bit):
    • libgcc, zlib, libc
      • installing on Debian based system:
      • dpkg --add-architecture i386
      • apt-get install zlib1g:i386 libgcc1:i386 libc6:i386
  2. Extra-CMake-Modules
  3. Android SDK
    • Download: http://developer.android.com/sdk/index.html to /opt/android/
    • Unpack, run "tools/android update sdk" and select the following packages:
      • Android SDK Tools (24.3.4)
      • Android SDK Platform-tools (23.0.1)
      • Android SDK Build-tools (22.0.1)
      • Android 5.1.1 (API 22): SDK Platform (only "SDK Platform" needed, i.e. no docs, samples or sources)
      • sys-img-armeabi-v7a-android-22 (required for emulator and unit tests)
    • result: now the SDK should be installed in /opt/android/android-sdk-linux
  4. Android NDK
  5. Qt with support for Android devices
    • Download the Qt 5.5.0 for Android: https://www.qt.io/download-open-source/#section-2 (32-bit or 64-bit as it fits your host system; usually 64-bit)
    • Variant 1: Offline Installers ("Skip" can be used without problem when asked to register an account)
    • Variant 2: Online installer ("Skip" can be used without problem when asked to register an account)
    • install the following components to /opt/android/Qt5.5.0:
      • Android armv7
      • Qt Creator 3.4.2 (cannot be disabled, some of its tools are used from other parts)
      • Recommended components:
        • Qt Quick Controls
        • Qt Location
        • Qt Script
        • Optional components (there might be KDE software using it):
        • Qt WebEngine
        • Qt Canvas 3D
        • Qt3D
        • Qt Quick 1
  6. Install the following software packages on your host system from your package manager (if not yet installed):
    • CMake: >= 2.8.6
    • Java Development Kit 7 (openjdk-7-jdk)
    • Ant

Environment Variables

The build environment is the name for the shell in that the application is build. The shell is prepared by exporting a series of environment variables that then are picked up by the build scripts.

export ADIR=/opt/android
export ANDROID_NDK=$ADIR/android-ndk-r10e
# note the _ROOT postfix here, different pattern
export ANDROID_SDK_ROOT=$ADIR/android-sdk-linux
export Qt5_android=$ADIR/Qt5.5.0/5.5/android_armv7/
export PATH=$ADIR/android-sdk-linux/platform-tools/:$PATH
# adapt the following path to your ant installation
export ANT=/usr/bin/ant
# adapt the following path to your openjdk location, eg:
#  openSUSE: /usr/lib64/jvm/java (needs default version being properly set, see notes below)
#  Debian: /usr/lib/jvm/java-7-openjdk-amd64
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk/

Some notes:

  • /opt/android should be replaced with the custom build folder selected by you
  • Java platform 7 is needed (both JRE and JDK). One can select the Java platform versions e.g. with update-alternatives --config java and update-alternatives --config javac
  • Use jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));' to find the JAVA_HOME