quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

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:
Mcross/build-android.sh | 2--
Mcross/package-android.sh | 33++++++++++++++++++++++-----------
Mdocker-android/build.sh | 35+++++++----------------------------
Mdocker-android/docker-compose.yml | 2+-
Mdocker-android/install.sh | 4++--
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