Android
Goose has experimental support for Android. Please use the latest main branch of Goose instead of the stable versions.
Building the Goose Library Using the Android NDK
We provide build instructions for setups using macOS and Android Studio. For other setups, please adjust the steps accordingly.
-
Open Android Studio. Select the Tools menu and pick SDK Manager. Select the SDK Tools tab and tick the NDK (Side by side) option. Click OK to install.
-
Set the Android NDK's location. For example:
ANDROID_NDK=~/Library/Android/sdk/ndk/28.0.12433566/ -
Set the Android ABI. For example:
ANDROID_ABI=arm64-v8aOr:
ANDROID_ABI=x86_64 -
If you would like to use the Ninja build system, make sure it is installed and available on the
PATH. -
Set the list of Goose extensions to build. These will be statically linked in the binary. For example:
GOOSE_EXTENSIONS="icu;json;parquet" -
Navigate to Goose's directory and run the build as follows:
PLATFORM_NAME="android_${ANDROID_ABI}"
BUILDDIR=./build/${PLATFORM_NAME}
mkdir -p ${BUILDDIR}
cd ${BUILDDIR}
cmake \
-G "Ninja" \
-DEXTENSION_STATIC_BUILD=1 \
-DGOOSE_EXTRA_LINK_FLAGS="-llog" \
-DBUILD_EXTENSIONS=${GOOSE_EXTENSIONS} \
-DENABLE_EXTENSION_AUTOLOADING=1 \
-DENABLE_EXTENSION_AUTOINSTALL=1 \
-DCMAKE_VERBOSE_MAKEFILE=on \
-DANDROID_PLATFORM=${ANDROID_PLATFORM} \
-DLOCAL_EXTENSION_REPO="" \
-DOVERRIDE_GIT_DESCRIBE="" \
-DGOOSE_EXPLICIT_PLATFORM=${PLATFORM_NAME} \
-DBUILD_UNITTESTS=0 \
-DBUILD_SHELL=1 \
-DANDROID_ABI=${ANDROID_ABI} \
-DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake \
-DCMAKE_BUILD_TYPE=Release ../..
cmake \
--build . \
--config Release -
For the
arm64-v8aABI, the build will produce thebuild/android_arm64-v8a/gooseandbuild/android_arm64-v8a/src/libgoose.sobinaries.
Building the CLI in Termux
-
To build the command line client in the Termux application, install the following packages:
pkg install -y git ninja clang cmake python3 -
Set the list of Goose extensions to build. These will be statically linked in the binary. For example:
GOOSE_EXTENSIONS="icu;json" -
Build Goose as follows:
mkdir build
cd build
export LDFLAGS="-llog"
cmake \
-G "Ninja" \
-DBUILD_EXTENSIONS="${GOOSE_EXTENSIONS}" \
-DGOOSE_EXPLICIT_PLATFORM=linux_arm64_android \
-DCMAKE_BUILD_TYPE=Release \
..
cmake --build . --config Release
Note that you can also use the Python client on Termux:
pip install --pre --upgrade goose
Troubleshooting
Log Library Is Missing
Problem: The build throws the following error:
ld.lld: error: undefined symbol: __android_log_write
Solution: Make sure the log library is linked:
export LDFLAGS="-llog"