⌘+k ctrl+k
1.1.3 (stable)
Search Shortcut cmd + k | ctrl + k
Android

DuckDB has experimental support for Android. Please use the latest main branch of DuckDB instead of the stable versions.

Building the DuckDB Library Using the Android NDK

We provide build instructions for setups using macOS and Android Studio. For other setups, please adjust the steps accordingly.

  1. 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.

  2. Set the Android NDK's location. For example:

    ANDROID_NDK=~/Library/Android/sdk/ndk/28.0.12433566/
    
  3. Set the Android ABI. For example:

    ANDROID_ABI=arm64-v8a
    

    Or:

    ANDROID_ABI=x86_64
    
  4. If you would like to use the Ninja build system, make sure it is installed and available on the PATH.

  5. Set the list of DuckDB extensions to build. These will be statically linked in the binary. For example:

    DUCKDB_EXTENSIONS="icu;json;parquet"
    
  6. Navigate to DuckDB'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 \
        -DDUCKDB_EXTRA_LINK_FLAGS="-llog" \
        -DBUILD_EXTENSIONS=${DUCKDB_EXTENSIONS} \
        -DENABLE_EXTENSION_AUTOLOADING=1 \
        -DENABLE_EXTENSION_AUTOINSTALL=1 \
        -DCMAKE_VERBOSE_MAKEFILE=on \
        -DANDROID_PLATFORM=${ANDROID_PLATFORM} \
        -DLOCAL_EXTENSION_REPO="" \
        -DOVERRIDE_GIT_DESCRIBE="" \
        -DDUCKDB_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
    
  7. For the arm64-v8a ABI, the build will produce the build/android_arm64-v8a/duckdb and build/android_arm64-v8a/src/libduckdb.so binaries.

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

Clone the DuckDB repository and build it as follows:

mkdir build
cd build
export LDFLAGS="-llog"
cmake \
    -G "Ninja" \
    -DBUILD_EXTENSIONS="" \
    -DDUCKDB_EXPLICIT_PLATFORM=linux_arm64_android \
    -DCMAKE_BUILD_TYPE=Release \
    ..
cmake --build . --config Release

Note that you can also use the Python client:

pip install --pre --upgrade duckdb

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"