Skip to content

Latest commit

 

History

History
84 lines (59 loc) · 2.66 KB

BUILD_ANDROID.adoc

File metadata and controls

84 lines (59 loc) · 2.66 KB

Building for Android

ℹ️
This work has received only cursory testing. As always, caveat emptor.

Pre-Requisites

Android Studio

There are probably other ways to cross-build for Android, but if you’re not using Android Studio, then you probably don’t need much help here.

Android NDK

A copy of the Android NDK is required to build native code applications. Android Studio has information for downloading it within the app.

Steps

You need to use the CMake that is included with Android Studio, because it knows how to build the Gradle targets. (At least on macOS, the system default cmake does not have the right generator support.)

You will also use the Android toolchain file for CMake that is included with the NDK.

ℹ️
You must use the NDK toolchain, not the one that came with the SDK. The SDK toolchain file is too old and will not work with modern NDKs!

When building for Android, by default we build static libraries, and we do not build tools or tests. The tools and tests won’t work since they assume a shell environment, and you don’t want to deal with the dependency nightmare that is dynamic libraries anyway. Trust us.

The Android NDK includes documentation for how to run CMake including the options that can be set. Details are located here: https://developer.android.com/ndk/guides/cmake

Tip
It is highly recommended you review the NDK documentation, because you will most likely want to change some of the default values for the ABI or API level. For the sake of clarity, we are assuming only the defaults here.

Set the following environment variables:

CMAKE

Path to the Android SDK supplied CMake binary. For example, on our macOS install of Android Studio, we have it located in $HOME/Library/Android/sdk/cmake/3.6.4111459/bin/cmake.

NDK

Path to the Android NDK. In the same installation, on our system, it is in $HOME/Library/Android/sdk/ndk-bundle

Using the above toolchain file, we can build for Android using the CMake standard CMAKE_TOOLCHAIN_FILE macro, and using the Android supplied CMake:

If you have checked out this repository in $SRC, and your copy of the Android SDK is located in $SDK, the following should work:

% cd $SRC
% mkdir android-build
% cd android-build
% ${CMAKE} -DCMAKE_TOOLCHAIN_FILE=${NDK}/build/cmake/android.toolchain.cmake ..

Then you can build using Xcode, or simply use cmake to drive the build:

% ${CMAKE} --build .

Extra effort may be required to enable the use of mbedTLS; you will need to review the mbedTLS documentation for configuring that for use in Android.