commit 0ec76c7eda2aeb39de028ca424b9dce4a0e3e8fe
parent 7cd2a4c5fbcb869b0d30494ab42fdfc1379cf593
Author: Iván Ávalos <avalos@disroot.org>
Date: Wed, 17 Sep 2025 22:43:23 +0200
android: better NDK version handling
Diffstat:
5 files changed, 32 insertions(+), 44 deletions(-)
diff --git a/cross/build-android.sh b/cross/build-android.sh
@@ -49,8 +49,6 @@ esac
API_LEVEL="24"
-ANDROID_NDK_HOME="${ANDROID_SDK_ROOT}/ndk-bundle"
-
HOST_ROOT="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64"
SYS_ROOT="${HOST_ROOT}/sysroot"
LIB_PATH="${SYS_ROOT}/usr/lib/${ARCH}-linux-androideabi:${SYS_ROOT}/usr/lib/${ARCH}-linux-androideabi/${API_LEVEL}:${ANDROID_NDK_HOME}/platforms/android-${API_LEVEL}/arch-${ARCH}/usr/lib"
diff --git a/cross/package-android.sh b/cross/package-android.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/env bash
set -e
if [[ $# -ne 1 ]]; then
@@ -11,17 +11,20 @@ fi
ANDROID_DIR=./QuickJS-android
NDK_VERSION=27.1.12297006
-if [[ "$OSTYPE" == "linux-gnu"* ]]; then
- export ANDROID_HOME=~/Android/Sdk
- export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin
- export PATH=$PATH:$ANDROID_HOME/ndk/$NDK_VERSION/toolchains/llvm/prebuilt/linux-x86_64/bin
-elif [[ "$OSTYPE" == "darwin"* ]]; then
- export ANDROID_HOME=~/Library/Android/sdk
- export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin
- export PATH=$PATH:$ANDROID_HOME/ndk/$NDK_VERSION/toolchains/llvm/prebuilt/darwin-x86_64/bin/
+if [[ "$OSTYPE" =~ ^linux-gnu* ]]; then
+ export ANDROID_HOME="${ANDROID_HOME:-${HOME}/Android/Sdk}"
+ export PATH="${PATH}:${ANDROID_HOME}/ndk/${NDK_VERSION}/toolchains/llvm/prebuilt/linux-x86_64/bin"
+elif [[ "$OSTYPE" =~ ^darwin* ]]; then
+ export ANDROID_HOME="${ANDROID_HOME:-${HOME}/Library/Android/Sdk}"
+ export PATH="${PATH}:${ANDROID_HOME}/ndk/${NDK_VERSION}/toolchains/llvm/prebuilt/darwin-x86_64/bin/"
+else
+ echo "unsupported platform $OSTYPE"
+ exit -1
fi
-export ANDROID_SDK_ROOT=$ANDROID_HOME
+export PATH="${PATH}:${ANDROID_HOME}/cmdline-tools/latest/bin"
+export ANDROID_SDK_ROOT="${ANDROID_HOME}"
+export ANDROID_NDK_HOME="${ANDROID_HOME}/ndk/${NDK_VERSION}"
# Install NDK version if it doesn't exist
if [ ! -d "$ANDROID_SDK_ROOT/ndk/$NDK_VERSION" ]; then
@@ -55,7 +58,15 @@ if [ "$1" = "all" ] || [ "$1" = "armeabi" ]; then
fi
pushd $ANDROID_DIR
-./gradlew publishToMavenLocal
+if [ "${MAVEN_PUBLISH:-0}" = 0 ]; then
+ ./gradlew --build-cache \
+ --console=plain \
+ publishToMavenLocal
+elif [ "${MAVEN_PUBLISH:-0}" = 1 ]; then
+ ./gradlew --build-cache \
+ --console=plain \
+ publishAllPublicationsToMavenCentralRepository
+fi
popd
tput bel
diff --git a/docker-android/build.sh b/docker-android/build.sh
@@ -1,6 +1,5 @@
-#!/usr/bin/env bash
-set -e
-set -x
+#!/bin/env bash
+set -ex
# Copy all the required files from volume
QJS_PATH=/opt/quickjs-tart
@@ -9,8 +8,11 @@ cp -r $QJS_PATH/quickjs ./
cp -r $QJS_PATH/sqlite3 ./
cp -r $QJS_PATH/subprojects ./
cp -r $QJS_PATH/QuickJS-android ./
+rm ./QuickJS-android/local.properties
cp $QJS_PATH/meson.build ./
-mkdir ./cross && cp $QJS_PATH/cross/build-android.sh ./cross/
+mkdir ./cross
+cp $QJS_PATH/cross/build-android.sh ./cross/
+cp $QJS_PATH/cross/package-android.sh ./cross/
cp $QJS_PATH/*.c ./
cp $QJS_PATH/*.h ./
cp $QJS_PATH/*.js ./
@@ -40,27 +42,4 @@ rm -rf taler-typescript-core/
# Build .so library
. /etc/environment
-./cross/build-android.sh x86
-./cross/build-android.sh x86_64
-./cross/build-android.sh arm64-v8a
-./cross/build-android.sh armeabi-v7a
-
-ANDROID_DIR=./QuickJS-android
-JNILIBS_DIR=$ANDROID_DIR/qtart/src/main/jniLibs
-cp ./build-android/x86/libtalerwalletcore.so $JNILIBS_DIR/x86
-cp ./build-android/x86/subprojects/c-ares/libc_ares.so $JNILIBS_DIR/x86
-cp ./build-android/x86_64/libtalerwalletcore.so $JNILIBS_DIR/x86_64
-cp ./build-android/x86_64/subprojects/c-ares/libc_ares.so $JNILIBS_DIR/x86_64
-cp ./build-android/arm64-v8a/libtalerwalletcore.so $JNILIBS_DIR/arm64-v8a
-cp ./build-android/arm64-v8a/subprojects/c-ares/libc_ares.so $JNILIBS_DIR/arm64-v8a
-cp ./build-android/armeabi-v7a/libtalerwalletcore.so $JNILIBS_DIR/armeabi-v7a
-cp ./build-android/armeabi-v7a/subprojects/c-ares/libc_ares.so $JNILIBS_DIR/armeabi-v7a
-cd $ANDROID_DIR
-
-# Build or publish .aar library
-if [ -z "${MAVEN_PUBLISH+x}" ]; then
- echo "Publishing to local maven"
- ./gradlew --build-cache --gradle-user-home /root/gradle-cache --console=plain publishToMavenLocal
-else
- ./gradlew publishAllPublicationsToMavenCentralRepository
-fi
+./cross/package-android.sh all
diff --git a/docker-android/docker-compose.yml b/docker-android/docker-compose.yml
@@ -8,6 +8,6 @@ services:
env_file: .env
volumes:
- ../.m2:/root/.m2
- - ../.gradle-cache:/root/gradle-cache
+ - ../.gradle:/root/.gradle
- ../:/opt/quickjs-tart:ro
# network_mode: host
diff --git a/docker-android/install.sh b/docker-android/install.sh
@@ -33,10 +33,10 @@ mv cmdline-tools ${ANDROID_HOME}/cmdline-tools/latest
mkdir -p ${ANDROID_HOME}/licenses/
printf "\n24333f8a63b6825ea9c5514f83c2829b004d1fee" > ${ANDROID_HOME}/licenses/android-sdk-license
-# Install platform-tools and ndk-bundle (for stripping libraries)
+# Install platform-tools
mkdir /root/.android
touch /root/.android/repositories.cfg
-echo y | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "platform-tools" "ndk-bundle"
+echo y | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "platform-tools"
# Add $ANDROID_HOME and $ANDROID_SDK_ROOT to PATH
# printf 'export PATH=$PATH:%s' $ANDROID_HOME/cmdline-tools/latest/bin > ~/.bashrc