#!/bin/bash # VavCore Android Unit Tests Build Script # This script builds the unit tests using Android NDK set -e echo "=== VavCore Android Unit Tests Build ===" # Configuration BUILD_TYPE=${1:-Debug} ABI=${2:-arm64-v8a} BUILD_DIR="build-${ABI}" echo "Build type: ${BUILD_TYPE}" echo "ABI: ${ABI}" echo "Build directory: ${BUILD_DIR}" # Check if NDK is available if [ -z "$ANDROID_NDK_HOME" ] && [ -z "$ANDROID_NDK_ROOT" ]; then echo "Error: ANDROID_NDK_HOME or ANDROID_NDK_ROOT must be set" exit 1 fi NDK_PATH="${ANDROID_NDK_HOME:-$ANDROID_NDK_ROOT}" echo "Using NDK: ${NDK_PATH}" # Create build directory mkdir -p "${BUILD_DIR}" cd "${BUILD_DIR}" # Configure with CMake cmake .. \ -DCMAKE_TOOLCHAIN_FILE="${NDK_PATH}/build/cmake/android.toolchain.cmake" \ -DANDROID_ABI="${ABI}" \ -DANDROID_NATIVE_API_LEVEL=29 \ -DCMAKE_BUILD_TYPE="${BUILD_TYPE}" \ -G "Ninja" # Build cmake --build . --config "${BUILD_TYPE}" -j$(nproc 2>/dev/null || echo 4) echo "" echo "=== Build Complete ===" echo "Test executable: ${BUILD_DIR}/VavCoreUnitTests" echo "" echo "To run tests on device:" echo " adb push ${BUILD_DIR}/VavCoreUnitTests /data/local/tmp/" echo " adb shell chmod +x /data/local/tmp/VavCoreUnitTests" echo " adb shell /data/local/tmp/VavCoreUnitTests"