From 40084ea6515a1cacdc0110913e70f143253d0c2f Mon Sep 17 00:00:00 2001 From: Nicolas Oliver Date: Thu, 5 Oct 2017 15:39:07 -0300 Subject: [PATCH] docs: improve android things docs * Add documentation on how to build android packages * Check env vars before running build-android.sh * Add doc strings to build-android.sh Signed-off-by: Nicolas Oliver --- docs/building.md | 28 +++++++++++++++++++++++++ scripts/build-android.sh | 44 ++++++++++++++++++++++++++++++++++++---- 2 files changed, 68 insertions(+), 4 deletions(-) diff --git a/docs/building.md b/docs/building.md index d469afd8..f550260c 100644 --- a/docs/building.md +++ b/docs/building.md @@ -132,6 +132,34 @@ autotools on linux. pkg-config --cflags --libs upm-i2clcd ~~~~~~~~~~~ +## Building for Android Things + +Requirements: +* [io.mraa.at](https://search.maven.org/#artifactdetails%7Cio.mraa.at%7Cmraa%7C1.8.0%7Caar) +* [io.mraa.at.upm](https://search.maven.org/#artifactdetails%7Cio.mraa.at.upm%7Cupm_zfm20%7C1.3.0%7Caar) +* [Android NDK](https://developer.android.com/ndk/downloads/index.html) >= 14b + +### Android NDK r14b + +~~~~~~~~~~~~~{.sh} +NDK_HOME="/path/to/android-ndk-r14b" +MRAA_INSTALL_DIR="/path/to/mraa/install" + +cmake -DBUILDSWIG=ON \ + -DBUILDSWIGPYTHON=OFF \ + -DBUILDSWIGNODE=OFF \ + -DBUILDSWIGJAVA=ON \ + -DANDROID_COMPILER_FLAGS_CXX='-std=c++11' \ + -DANDROID_PIE=1 \ + -DANDROID_PLATFORM=android-24 \ + -DANDROID_STL_FORCE_FEATURES=ON \ + -DANDROID_STL=c++_shared \ + -DANDROID_TOOLCHAIN_NAME=x86-i686 \ + -DCMAKE_TOOLCHAIN_FILE=$NDK_HOME/build/cmake/android.toolchain.cmake \ + -DCMAKE_FIND_ROOT_PATH=$MRAA_INSTALL_DIR \ + .. +~~~~~~~~~~~~~ + ## Building with Docker You can use `docker` and `docker-compose` to generate a complete build environment diff --git a/scripts/build-android.sh b/scripts/build-android.sh index 1352b520..d1f69f71 100755 --- a/scripts/build-android.sh +++ b/scripts/build-android.sh @@ -1,8 +1,45 @@ #!/usr/bin/env bash - +# +# The script is used to build .aar packages for Upm modules. +# +# Author: Nicolas Oliver +# +# All environment variables used are passed from docker-compose. +# Those environment variables can also be declared in the host, +# and this script can be used to build .aar packages without using +# docker-compose. +# +# Environment variables: +# - NDK_HOME - Path to Android NDK install folder. i.e. /opt/android-ndk-r14b/ +# - MRAA_INSTALL_DIR - Path to Mraa library install folder. i.e /opt/mraa/install/ +# - JAVA_HOME - Path to Java install folder. i.e. /usr/lib/jvm/java-8-openjdk-amd64/ +# +# IMPORTANT: MRAA_INSTALL_DIR must contain an mraa version built for Android Things. set -e -export PKG_CONFIG_LIBDIR="$NDK_HOME/platforms/android-24/arch-x86/usr/lib:$MRAA_INSTALL_DIR/lib/pkgconfig/" +# Check required environment variables and exit if they are not set +function check_environment { + VAR_NAME=$1 + VAR_VALUE=$2 + # Check required parameters + VAR_NAME=${VAR_NAME:?value not provided} + # Chek if variable is set + if [ -z "${VAR_VALUE}" ]; then + echo "Required environment variable ${VAR_NAME} is not defined. Exiting..." + exit 1; + else + echo "Required environment variable ${VAR_NAME} is set." + fi +} + +# Check for required environment variables +check_environment "NDK_HOME" ${NDK_HOME} +check_environment "MRAA_INSTALL_DIR" ${MRAA_INSTALL_DIR} +check_environment "JAVA_HOME" ${JAVA_HOME} + +PKG_CONFIG_LIBDIR="$NDK_HOME/platforms/android-24/arch-x86/usr/lib" +PKG_CONFIG_LIBDIR=$PKG_CONFIG_LIBDIR":$MRAA_INSTALL_DIR/lib/pkgconfig/" +export PKG_CONFIG_LIBDIR cmake \ -DANDROID_COMPILER_FLAGS_CXX='-std=c++11' \ @@ -30,8 +67,7 @@ make -j8 -Cbuild # Anotate the .java src from doxygen find src/ -name "javaupm_*.i" > build/upm.i.list -# TODO: install doxy port tool -#doxyport build/upm.i.list \ +#../doxy/doxyport build/upm.i.list \ # -s src/interfaces/,src/bacnetmstp,src/bmg160,src/bma250e,src/bmm150 \ # -m doxy/samples.mapping.txt \ # -d build/src/ \