Android/Environment via Container: Difference between revisions

From KDE Community Wiki
(Moved from general Android page)
 
No edit summary
Line 1: Line 1:
= Use Docker Container for KDE on Android Development =
= Using Docker for KDE on Android Development =
This is the easiest way to start cross-compiling and developing Qt applications for Android. The explained Docker image will install all dependencies and setup all environment variables automatically. By this, it closely follows the steps explained in the detailed system setup guide:
This is the easiest way to start cross-compiling and developing Qt applications for Android. The explained Docker image will install all dependencies and setup all environment variables automatically. By this, it closely follows the steps explained in the detailed system setup guide:
* [[Android/Environment|Setup Cross-Building Environment for KDE on Android]]
* [[Android/Environment|Setup Cross-Building Environment for KDE on Android]]


== Use Docker Container ==
== Setting up ==
First, you must install Docker on your system, which should be available via your distribution. Then you only have to checkout the Docker image configuration in <code>git clone git://anongit.kde.org/android-builder.git</code>.
First, you must install Docker on your system.
First pull <code>docker pull kdeorg/android-sdk</code>.


Then in folder <code>image</code> perform the following commands to build, then create, and finally to run your KDE on Android build image:
This image alone contains a working Android SDK, NDK and Qt binaries. The easiest is to access it like this:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
cd image
docker run -ti --rm kdeorg/android-sdk bash
docker build -t kde-android-sdk .
docker create -ti --name myproject kde-android-sdk bash
docker start -i myproject
</syntaxhighlight>
</syntaxhighlight>
More details can be found in the README.md file in the checked out repository.


==== Change Container Size ====
Here one can start developing at ease in an environment welcoming to projects that use cmake, Qt, ECM, etc.
By default Docker containers have a size of 10GB. This is sufficient for the typical use case, but usually much too small if you setup a full cross-building toolchain. For this, you have to increase the default container size (note: the following deletes all your current containers, hence do backups and do it with care!)
 
* Documentation: https://docs.docker.com/engine/reference/commandline/daemon/
== Building an application ==
To make it easy to compile applications we put some scripts to get started. They can be triggered like this:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
service docker stop
docker run -ti --rm kdeorg/android-sdk /opt/helpers/build-generic <appname>
rm -rf /var/lib/docker
service docker start
docker -d --storage-opt dm.basesize=20G &
</syntaxhighlight>
</syntaxhighlight>
=== Tricks ===
* build-generic fetch the dependencies of <appname>, build them and then build <appname>, outputting an apk to /output. Therefore a volume to /output will catch the result. e.g. <code>-v $HOME/apks:/output</code>
* if we want to develop locally a project, we can also use volumes and put them in the home directory. e.g. <code>/home/apol/devel/frameworks/kate:/home/user/kate</code>.

Revision as of 17:08, 30 November 2017

Using Docker for KDE on Android Development

This is the easiest way to start cross-compiling and developing Qt applications for Android. The explained Docker image will install all dependencies and setup all environment variables automatically. By this, it closely follows the steps explained in the detailed system setup guide:

Setting up

First, you must install Docker on your system. First pull docker pull kdeorg/android-sdk.

This image alone contains a working Android SDK, NDK and Qt binaries. The easiest is to access it like this:

docker run -ti --rm kdeorg/android-sdk bash

Here one can start developing at ease in an environment welcoming to projects that use cmake, Qt, ECM, etc.

Building an application

To make it easy to compile applications we put some scripts to get started. They can be triggered like this:

docker run -ti --rm kdeorg/android-sdk /opt/helpers/build-generic <appname>

Tricks

  • build-generic fetch the dependencies of <appname>, build them and then build <appname>, outputting an apk to /output. Therefore a volume to /output will catch the result. e.g. -v $HOME/apks:/output
  • if we want to develop locally a project, we can also use volumes and put them in the home directory. e.g. /home/apol/devel/frameworks/kate:/home/user/kate.