android: Add android build on travis-ci

This adds a android-apk-build which runs on travis-ci. This is using a
quite ugly trick, building in a docker container, basically just to get
a newer cmake. The cmake in trusty is way to old to work with android
builds.

A good side-effect is that this is a complete copy-paste for anyone who
would like to build android-binaries them self on Linux. All the
uglyness is hidden away in a docker container.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
This commit is contained in:
Anton Lundin 2017-02-06 08:06:55 +01:00 committed by Dirk Hohndel
parent c92a86f898
commit 063aadd166
4 changed files with 55 additions and 0 deletions

View file

@ -47,6 +47,18 @@ matrix:
- libhyphen-dev - libhyphen-dev
- libicu52 - libicu52
- env: SUBSURFACE_PLATFORM="android"
# Currently hard coded to arm
os: linux
language: c++
services:
- docker
# TODO: caching
# cache:
# timeout: 300
# directories:
# - 3pp
before_install: before_install:
- source ${TRAVIS_BUILD_DIR}/scripts/${SUBSURFACE_PLATFORM}/before_install.sh - source ${TRAVIS_BUILD_DIR}/scripts/${SUBSURFACE_PLATFORM}/before_install.sh

View file

@ -0,0 +1,12 @@
#!/bin/bash
if [ ! -z $TRAVIS_BRANCH ] && [ "$TRAVIS_BRANCH" != "master" ] ; then
export UPLOADTOOL_SUFFIX=$TRAVIS_BRANCH
fi
echo "Submitting the folloing apk for continuous build release:"
ls -lh $TRAVIS_BUILD_DIR/apk/*.apk
# get and run the upload script
wget -c https://github.com/probonopd/uploadtool/raw/master/upload.sh
bash ./upload.sh $TRAVIS_BUILD_DIR/apk/*.apk

View file

@ -0,0 +1,19 @@
#!/bin/bash
# Travis only pulls shallow repos. But that messes with git describe.
# Sorry Travis, fetching the whole thing and the tags as well...
git fetch --unshallow
git pull --tags
git describe
# Ugly, but keeps it running during the build
docker run -v $PWD:/workspace/subsurface --name=builder -w /workspace -d ubuntu /bin/sleep 60m
docker exec -t builder apt-get update
# subsurface android build dependencies
docker exec -t builder apt-get install -y git cmake autoconf libtool-bin openjdk-8-jdk-headless ant wget unzip python bzip2 pkg-config
# Qt installer dependencies
docker exec -t builder apt-get install -y libx11-xcb1 libgl1-mesa-glx libglib2.0-0
# Inject cached 3pp's (if none exists in 3pp dir, we inject zero ones, and all is downloaded in the container)
# TODO: caching
#docker cp 3pp builder:/workspace
docker exec -t builder mkdir -p /workspace/3pp

View file

@ -0,0 +1,12 @@
#!/bin/bash
docker exec -t builder subsurface/packaging/android/android-build-wrapper.sh
# Extract the built apk from the builder container
docker cp builder:/workspace/subsurface-mobile-build-arm/build/outputs/apk/ .
# TODO: Caching
# Yank Qt, android-sdk, android-ndk and other 3pp source tar balls out from the container and cache them.
#docker exec builder mkdir -p 3pp
#docker exec builder sh -c 'mv Qt android-sdk-linux android-ndk-* *.tar.gz *.tar.bz2 3pp/'
#docker cp builder:/workspace/3pp .