⌘+k ctrl+k
1.3 (稳定版)
搜索快捷键 cmd + k | ctrl + k
Android

DuckDB 对 Android 提供实验性支持。请使用 DuckDB 最新的 main 分支,而不是稳定版本。

使用 Android NDK 构建 DuckDB 库

我们提供了使用 macOS 和 Android Studio 进行设置的构建说明。对于其他设置,请相应地调整步骤。

  1. 打开 Android Studio。选择工具 (Tools) 菜单并选择SDK 管理器 (SDK Manager)。选择 SDK 工具选项卡并勾选NDK(并排)(NDK (Side by side))选项。点击确定 (OK) 进行安装。

  2. 设置 Android NDK 的位置。例如

    ANDROID_NDK=~/Library/Android/sdk/ndk/28.0.12433566/
    
  3. 设置 Android ABI。例如

    ANDROID_ABI=arm64-v8a
    

    ANDROID_ABI=x86_64
    
  4. 如果您想使用 Ninja 构建系统,请确保它已安装并可在 PATH 中找到。

  5. 设置要构建的 DuckDB 扩展列表。这些扩展将静态链接到二进制文件中。例如

    DUCKDB_EXTENSIONS="icu;json;parquet"
    
  6. 导航到 DuckDB 的目录并按如下方式运行构建

    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. 对于 arm64-v8a ABI,构建将生成 build/android_arm64-v8a/duckdbbuild/android_arm64-v8a/src/libduckdb.so 二进制文件。

在 Termux 中构建 CLI

  1. 要在 Termux 应用程序中构建命令行客户端,请安装以下软件包

    pkg install -y git ninja clang cmake python3
    
  2. 设置要构建的 DuckDB 扩展列表。这些扩展将静态链接到二进制文件中。例如

    DUCKDB_EXTENSIONS="icu;json"
    
  3. 按如下方式构建 DuckDB

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

请注意,您也可以在 Termux 上使用 Python 客户端

pip install --pre --upgrade duckdb

故障排除

缺少日志库

问题:构建抛出以下错误

ld.lld: error: undefined symbol: __android_log_write

解决方案:确保已链接日志库

export LDFLAGS="-llog"