Files
IdP/tauri_app/docker/build-android-apk.sh
2026-07-02 16:19:06 +03:00

78 lines
3.1 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
set -euo pipefail
cd /workspace
export VITE_API_URL="${VITE_API_URL:-${PUBLIC_API_URL:-http://localhost:3000}}"
export VITE_FRONTEND_URL="${VITE_FRONTEND_URL:-${PUBLIC_FRONTEND_URL:-http://localhost:3002}}"
export ANDROID_HOME="${ANDROID_HOME:-/opt/android-sdk}"
export ANDROID_SDK_ROOT="${ANDROID_SDK_ROOT:-${ANDROID_HOME}}"
export GRADLE_USER_HOME="${GRADLE_USER_HOME:-/root/.gradle}"
export ANDROID_AGP_LOCAL_REPO="${ANDROID_AGP_LOCAL_REPO:-/opt/android-agp-maven}"
if [ -z "${ANDROID_NDK_HOME:-}" ]; then
NDK_DIR="$(find "${ANDROID_HOME}/ndk" -mindepth 1 -maxdepth 1 -type d 2>/dev/null | sort -V | tail -n 1 || true)"
if [ -n "${NDK_DIR}" ]; then
export ANDROID_NDK_HOME="${NDK_DIR}"
export NDK_HOME="${NDK_DIR}"
fi
fi
echo "==> Android SDK: ${ANDROID_HOME}"
echo "==> Android NDK: ${ANDROID_NDK_HOME:-не найден}"
if [ -z "${ANDROID_NDK_HOME:-}" ] || [ ! -d "${ANDROID_NDK_HOME}" ]; then
echo "Android NDK не найден в ${ANDROID_HOME}/ndk. Используйте Android SDK image с предустановленным NDK или примонтируйте SDK с NDK." >&2
exit 1
fi
mkdir -p /out
echo "==> Проверка web-сборки tauri_app"
npm --workspace @lendry/tauri-app run build
cd /workspace/tauri_app
if [ -d "src-tauri/gen/android" ]; then
echo "==> Очистка предыдущего Android проекта Tauri"
rm -rf src-tauri/gen/android
fi
echo "==> Инициализация Android проекта Tauri"
npm run android:init -- --ci || npm run android:init
echo "==> Настройка репозиториев Gradle (Google Maven + локальный кэш AGP)"
/workspace/tauri_app/docker/patch-android-gradle-repos.sh /workspace/tauri_app/src-tauri/gen/android
echo "==> Настройка Android SDK (offline, без загрузки platform из Google)"
/workspace/tauri_app/docker/patch-android-sdk.sh /workspace/tauri_app/src-tauri/gen/android
echo "==> Настройка offline Gradle wrapper (если bundled zip доступен)"
/workspace/tauri_app/docker/install-offline-gradle.sh /workspace/tauri_app/src-tauri/gen/android
echo "==> Подготовка keystore для release-подписи APK"
/workspace/tauri_app/docker/ensure-android-keystore.sh
/workspace/tauri_app/docker/patch-android-signing.sh /workspace/tauri_app/src-tauri/gen/android
echo "==> Сборка Android APK (release, signed)"
npm run tauri -- android build --apk
APK_PATH="$(find /workspace/tauri_app/src-tauri/gen/android -type f -name '*release*.apk' ! -name '*unsigned*' | sort | tail -n 1 || true)"
if [[ -z "${APK_PATH}" ]]; then
APK_PATH="$(find /workspace/tauri_app/src-tauri/gen/android -type f -name '*.apk' ! -name '*unsigned*' | sort | tail -n 1 || true)"
fi
if [ -z "${APK_PATH}" ] || [ ! -f "${APK_PATH}" ]; then
echo "APK не найден после сборки" >&2
find /workspace/tauri_app/src-tauri/gen/android -maxdepth 8 -type f -name '*.apk' | sort >&2 || true
exit 1
fi
/workspace/tauri_app/docker/verify-apk-signature.sh "${APK_PATH}"
cp "${APK_PATH}" /out/lendry-id.apk
chmod 0644 /out/lendry-id.apk
echo "==> APK готов: /out/lendry-id.apk"
ls -lh /out/lendry-id.apk