Android
Android
DuckDB는 Android를 실험적으로 지원해요. 안정 버전 대신 최신 main 브랜치를 사용하는 것을 권장해요. Android NDK나 Termux에서 DuckDB 라이브러리와 CLI를 빌드하는 방법을 살펴볼게요.
출처: 문서
본문
DuckDB는 Android를 실험적으로 지원해요. 안정 버전 대신 최신 main 브랜치를 사용해주세요.
Android NDK로 DuckDB 라이브러리 빌드하기
macOS와 Android Studio를 사용하는 설정에 대한 빌드 지침을 제공해요. 다른 설정에서는 단계를 그에 맞게 조정해주세요.
-
Android Studio를 엽니다. Tools 메뉴에서 SDK Manager를 선택해요. SDK Tools 탭에서 NDK (Side by side) 옵션을 체크해요. 설치하려면 OK를 클릭해요.
-
Android NDK 위치를 설정해요. 예를 들어:
ANDROID_NDK=~/Library/Android/sdk/ndk/28.0.12433566/ -
Android ABI를 설정해요. 예를 들어:
ANDROID_ABI=arm64-v8a또는:
ANDROID_ABI=x86_64 -
Ninja 빌드 시스템을 사용하려면 설치되어 있고
PATH에서 사용 가능한지 확인해요. -
빌드할 DuckDB 확장 목록을 설정해요. 이들은 바이너리에 정적으로 링크돼요. 예를 들어:
DUCKDB_EXTENSIONS="icu;json;parquet" -
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 -
arm64-v8aABI의 경우 빌드는build/android_arm64-v8a/duckdb와build/android_arm64-v8a/src/libduckdb.so바이너리를 생성해요.
Termux에서 CLI 빌드하기
-
Termux 애플리케이션에서 명령줄 클라이언트를 빌드하려면 다음 패키지를 설치해요.
pkg install -y git ninja clang cmake python3 -
빌드할 DuckDB 확장 목록을 설정해요. 이들은 바이너리에 정적으로 링크돼요. 예를 들어:
DUCKDB_EXTENSIONS="icu;json" -
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"
더 알아보기 (Learn more)
- Building DuckDB 개요에서 빌드 사전 요구 사항을 확인해요.