#!/usr/bin/env bash set -euo pipefail cd /workspace # 1. Настройка переменных окружения 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}}" # Устанавливаем целевую версию Gradle Plugin. # Можно переопределить через Docker: -e ANDROID_GRADLE_PLUGIN_VERSION=8.5.0 export ANDROID_GRADLE_PLUGIN_VERSION="${ANDROID_GRADLE_PLUGIN_VERSION:-8.3.2}" # Поиск NDK 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:-не найден}" echo "==> Целевая версия Android Gradle Plugin: ${ANDROID_GRADLE_PLUGIN_VERSION}" if [ -z "${ANDROID_NDK_HOME:-}" ] || [ ! -d "${ANDROID_NDK_HOME}" ]; then echo "Ошибка: Android NDK не найден." >&2 exit 1 fi mkdir -p /out # 2. Сборка веб-части echo "==> Проверка web-сборки tauri_app" npm --workspace @lendry/tauri-app run build cd /workspace/tauri_app # 3. Инициализация проекта 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 # 4. Принудительный патчинг всех файлов конфигурации Gradle # Мы заменяем любые упоминания версии плагина на нашу стабильную версию echo "==> Патчинг конфигурации Gradle на версию ${ANDROID_GRADLE_PLUGIN_VERSION}" find src-tauri/gen/android -type f \( -name "*.gradle" -o -name "*.gradle.kts" -o -name "*.toml" \) -print0 | xargs -0 sed -i -E \ -e "s/(com\.android\.tools\.build:gradle:)[0-9]+\.[0-9]+\.[0-9]+/\1${ANDROID_GRADLE_PLUGIN_VERSION}/g" \ -e "s/(id\(?['\"]com\.android\.application['\"]? version ['\"])[0-9]+\.[0-9]+\.[0-9]+/\1${ANDROID_GRADLE_PLUGIN_VERSION}/g" \ -e "s/(agp[[:space:]]*=[[:space:]]*['\"])[0-9]+\.[0-9]+\.[0-9]+/\1${ANDROID_GRADLE_PLUGIN_VERSION}/g" # 5. Сборка APK echo "==> Сборка Android APK" npm run tauri -- android build --apk # 6. Копирование результата APK_PATH="$(find /workspace/tauri_app/src-tauri/gen/android -type f -name '*.apk' | sort | tail -n 1 || true)" if [ -z "${APK_PATH}" ] || [ ! -f "${APK_PATH}" ]; then echo "Ошибка: APK не найден после сборки" >&2 exit 1 fi 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