Create an LCE inference binary for Android¶
This guide explains how to build a standalone inference binary that can be executed on an Android device using the Android developer tools. If you'd rather use LCE for inference as part of an Android app, please check out this guide instead.
To build Larq Compute Engine (LCE) for Android, you must have the Android NDK and SDK installed on your system. Below we explain how to install the Android prerequisites in the LCE Docker container and how to configure the LCE Bazel build settings accordingly. Before proceeding with the next steps, please follow these instructions to setup the Docker container and these instructions to setup Bazel.
We recommend using the Docker volume as described here to be able to easily transfer files in-between the container and the host machine.
We provide a bash script which uses the
sdkmanager tool to install the Android NDK and SDK inside the Docker container. Please run the script by executing the following command from the LCE root directory:
After executing the bash script, please accept the Android SDK licence agreement. The script will download and unpack the Android NDK and SKD under the directory
/tmp/lce_android in the LCE Docker container.
Custom Android version¶
The Android NDK and SDK versions used in LCE are currently hard-coded in the install script. To build LCE against a different NDK and SDK versions, you can manually modify
ANDROID_NDK_VERSION variables in the install script. Additionally, the following configurations in the
.bazelrc file need to be adjusted:
build --action_env ANDROID_NDK_HOME="/tmp/lce_android/ndk/18.1.5063045" build --action_env ANDROID_NDK_API_LEVEL="21" build --action_env ANDROID_BUILD_TOOLS_VERSION="28.0.3" build --action_env ANDROID_SDK_API_LEVEL="29" build --action_env ANDROID_SDK_HOME="/tmp/lce_android"
Build an LCE inference or benchmark binary¶
To build an LCE inference binary for Android (see here for creating your own LCE binary) the Bazel target needs to built with
--config=android_arm64 flag. For example, to build the minimal example for Android, run the following command from the LCE root directory:
bazel build -c opt --config=android_arm64 //examples:lce_minimal
To build the LCE benchmark tool for Android, simply build the bazel target
The resulting binaries will be stored at
bazel-bin directory inside the
lce-volume is a soft link to the build artifacts directory outside the
lce-volume. As a result, in order to be able to access the inference binaries on the host machine, you need to manually copy them from the
bazel-bin to the
lce-volume directory. To do so, run the following command from the LCE root directory:
cp bazel-bin/larq_compute_engine/tflite/benchmark/lce_benchmark_model .