Marble/AndroidCompiling: Difference between revisions

    From KDE TechBase
    (add release mode, remove obsolete cmake options)
    (Add Qt5_android_cmake environment variable)
    Line 61: Line 61:
    And for the Android version:
    And for the Android version:
    <syntaxhighlight lang="bash">export Qt5_android=/opt/Qt/5.4/android_armv7</syntaxhighlight>
    <syntaxhighlight lang="bash">export Qt5_android=/opt/Qt/5.4/android_armv7</syntaxhighlight>
    Also specify the location of qt-android-cmake:
    <syntaxhighlight lang="bash">export Qt5_android_cmake=/path/to/qt-android-cmake</syntaxhighlight>


    And you also need to specify your target platform (e.g.: 18):
    And you also need to specify your target platform (e.g.: 18):

    Revision as of 12:44, 19 July 2015

     
    Under Construction
    This is a new page, currently under construction!


    This page present how to compile Marble for Android, using the Android SDK, Android NDK and Qt for Android, and how to deploy it to your device.

    Prerequisites

    You will need the following tools:

    1. Android SDK - It can be downloaded from here: http://developer.android.com/sdk/index.html
    Note
    The SDK contains binary 32 bit tools that are required to create the Marble package. If you're running a 64 bit system, install support for running 32 bit applications.
    1. Android NDK - You can download it from here: https://developer.android.com/ndk/index.html
    2. Qt with support for Android devices. Download the best one for you: https://www.qt.io/download-open-source/#section-2 and install it, but be sure that the Android support is installed too (for example you have to check in to install it in the online installer).
    3. CMake - Usually you should be able to install it from your repository.
    4. Java Development Kit - For example you can install openjdk, usually it should be in your repository.
    5. Ant - This should be available from the repositories too.

    Some Android platforms will be needed, you should install them with the Android SDK's package manager. It can be started with:

    1. /path_where_you_installed_the_sdk/tools/android sdk
      

    Make sure to install the following platforms:

    1. 10
    2. 11
    3. 16
    4. 18
    5. 19

    Getting the Marble Source Code

    1. Start a terminal
    2. We download the source code by cloning the developer repository with the following command:
    git clone git://anongit.kde.org/marble ~/marble/sources
    

    After you run the git clone command (shown above), all the Marble source files and considerable resource files will be found in a folder called marble in your home directory.

    Getting the CMake toolchain for Android

    First, you should change your working directory to Marble's source directory:

    cd ~/marble/sources
    

    Then the toolchain have to be cloned from its git repository:

    git clone https://github.com/LaurentGomila/qt-android-cmake.git
    

    We will use this to compile Marble and pack it as an apk.

    Setting your PATH

    You have to add the following paths to your PATH:

    Android NDK:

    export ANDROID_NDK=/path_to_your_NDK_install
    

    Android SDK:

    export ANDROID_SDK=/path_to_your_SDK_install
    

    Ant:

    You can get the path to the binary with:

    whereis ant
    

    After you know the path:

    export ANT=/path_to_ant
    

    Java:

    Path to your Java installation, for example:

    export JAVA_HOME=/usr/lib/jvm/java-7-openjdk
    

    Qt:

    For example, if you installed Qt in /opt/Qt you have to set the following on a 64 bit system:

    export Qt5_host=/opt/Qt/5.4/gcc_64
    

    And for the Android version:

    export Qt5_android=/opt/Qt/5.4/android_armv7
    

    Also specify the location of qt-android-cmake:

    export Qt5_android_cmake=/path/to/qt-android-cmake
    

    And you also need to specify your target platform (e.g.: 18):

    export ANDROID_PLATFORM=android-18
    

    Setting up the AndroidManifest.xml

    Before compiling Marble, Marbles's manifest file have to be placed at the right place. Run the following command:

    cp ~/marble/sources/data/android/AndroidManifest_MarbleMaps.xml.in ~/marble/sources/qt-android-cmake/AndroidManifest.xml.in
    

    Compiling Marble

    First of all, create a build directory in marble's source dir:

    mkdir ~/marble/build
    

    Than change your working directory to it:

    cd ~/marble/build
    

    Then the project have to be configured with Cmake. First we will build the libraries and the plugins, after that we will build the app.

    First, run the following command:

    cmake -DCMAKE_TOOLCHAIN_FILE=../sources/qt-android-cmake/toolchain/android.toolchain.cmake -DCMAKE_BUILD_TYPE=Release -DQT_NO_WEBKIT=TRUE -DQT_NO_PRINTER=TRUE  -DQT_NO_DBUS=TRUE -DBUILD_MARBLE_PLUGINS=YES  -DBUILD_MARBLE_APPS=NO  -DCMAKE_INSTALL_PREFIX=. ../sources/
    

    This will generate the needed Makefile for compiling. You can start the compiling process with the following command:

    make
    

    After that, the libraries have to be put at the right place:

    make install
    

    Now we want to compile the application and to create the apk. Run the following:

    cmake -DCMAKE_TOOLCHAIN_FILE=../sources/qt-android-cmake/toolchain/android.toolchain.cmake -DCMAKE_BUILD_TYPE=Release -DQT_NO_WEBKIT=TRUE -DQT_NO_PRINTER=TRUE  -DQT_NO_DBUS=TRUE -DBUILD_MARBLE_PLUGINS=NO  -DBUILD_MARBLE_APPS=YES  -DCMAKE_INSTALL_PREFIX=. ../sources/
    
    make
    

    Sending the application to your device

    After the build successfully finished, the apk will be in the following directory:

    cd ~/marble/build/src/apps/marble_maps/bin/
    

    You can send the compiled application to your connected device with the following command:

    adb install -r QtApp-debug.apk