78 lines
3.1 KiB
Bash
78 lines
3.1 KiB
Bash
#!/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
|