Android
DuckDB hat experimentelle Unterstützung für Android. Bitte verwenden Sie den aktuellen Branch main von DuckDB statt der stabilen Versionen.
Die DuckDB-Bibliothek mit dem Android NDK bauen
Wir beschreiben den Build für Setups mit macOS und Android Studio. Für andere Setups passen Sie die Schritte entsprechend an.
-
Öffnen Sie Android Studio. Wählen Sie das Menü Tools und dann SDK Manager. Wählen Sie den Tab SDK Tools und aktivieren Sie die Option NDK (Side by side). Klicken Sie auf OK, um zu installieren.
-
Setzen Sie den Speicherort des Android NDK. Zum Beispiel:
Terminal window ANDROID_NDK=~/Library/Android/sdk/ndk/28.0.12433566/ -
Setzen Sie die Android ABI. Zum Beispiel:
Terminal window ANDROID_ABI=arm64-v8aOder:
Terminal window ANDROID_ABI=x86_64 -
Wenn Sie das Ninja-Buildsystem verwenden möchten, stellen Sie sicher, dass es installiert und im
PATHverfügbar ist. -
Legen Sie die Liste der zu bauenden DuckDB-Erweiterungen fest. Diese werden statisch in die Binärdatei gelinkt. Zum Beispiel:
Terminal window DUCKDB_EXTENSIONS="icu;json;parquet" -
Wechseln Sie ins DuckDB-Verzeichnis und starten Sie den Build wie folgt:
Terminal window 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 -
Für die ABI
arm64-v8aerzeugt der Build die Binärdateienbuild/android_arm64-v8a/duckdbundbuild/android_arm64-v8a/src/libduckdb.so.
Die CLI in Termux bauen
-
Um den Kommandozeilen-Client in der Termux-App zu bauen, installieren Sie die folgenden Pakete:
Terminal window pkg install -y git ninja clang cmake python3 -
Legen Sie die Liste der zu bauenden DuckDB-Erweiterungen fest. Diese werden statisch in die Binärdatei gelinkt. Zum Beispiel:
Terminal window DUCKDB_EXTENSIONS="icu;json" -
Bauen Sie DuckDB wie folgt:
Terminal window mkdir buildcd buildexport LDFLAGS="-llog"cmake \-G "Ninja" \-DBUILD_EXTENSIONS="${DUCKDB_EXTENSIONS}" \-DDUCKDB_EXPLICIT_PLATFORM=linux_arm64_android \-DCMAKE_BUILD_TYPE=Release \..cmake --build . --config Release
Beachten Sie, dass Sie den Python-Client auch unter Termux verwenden können:
pip install --pre --upgrade duckdbFehlerbehebung
Log-Bibliothek fehlt
Problem: Der Build wirft den folgenden Fehler:
ld.lld: error: undefined symbol: __android_log_writeLösung: Stellen Sie sicher, dass die Log-Bibliothek gelinkt ist:
export LDFLAGS="-llog"