From f1068edc89c046ed8eecd4cbc352c89c4fa686a1 Mon Sep 17 00:00:00 2001 From: lendry Date: Fri, 26 Jun 2026 16:29:12 +0300 Subject: [PATCH] fix docker for tauri app --- docker-compose.yml | 2 +- tauri_app/docker/build-android-apk.sh | 38 +++++++++++++++++++++------ 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index b42a344..59e8589 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -242,7 +242,7 @@ services: VITE_FRONTEND_URL: ${PUBLIC_FRONTEND_URL:-http://localhost:3002} PUBLIC_API_URL: ${PUBLIC_API_URL:-http://localhost:3000} PUBLIC_FRONTEND_URL: ${PUBLIC_FRONTEND_URL:-http://localhost:3002} - ANDROID_GRADLE_PLUGIN_VERSION: ${ANDROID_GRADLE_PLUGIN_VERSION:-8.11.1} + ANDROID_GRADLE_PLUGIN_VERSION: ${ANDROID_GRADLE_PLUGIN_VERSION:-} volumes: - ./apps/frontend/public/downloads:/out diff --git a/tauri_app/docker/build-android-apk.sh b/tauri_app/docker/build-android-apk.sh index 5a7d3f8..97d3094 100644 --- a/tauri_app/docker/build-android-apk.sh +++ b/tauri_app/docker/build-android-apk.sh @@ -7,7 +7,7 @@ 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 ANDROID_GRADLE_PLUGIN_VERSION="${ANDROID_GRADLE_PLUGIN_VERSION:-8.11.1}" +export ANDROID_GRADLE_PLUGIN_VERSION="${ANDROID_GRADLE_PLUGIN_VERSION:-}" 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)" @@ -37,14 +37,36 @@ if [ ! -d "src-tauri/gen/android" ]; then npm run android:init -- --ci || npm run android:init fi +resolve_agp_version() { + if [ -n "${ANDROID_GRADLE_PLUGIN_VERSION}" ]; then + echo "${ANDROID_GRADLE_PLUGIN_VERSION}" + return + fi + + for version in 8.10.1 8.9.3 8.8.2 8.7.3 8.6.1; do + url="https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/${version}/gradle-${version}.pom" + if curl -fsIL --connect-timeout 10 --max-time 30 "${url}" >/dev/null 2>&1; then + echo "${version}" + return + fi + done + + echo "8.10.1" +} + echo "==> Проверка Android Gradle Plugin" -if grep -R "com.android.tools.build:gradle:8.11.0\\|8.11.0" -n src-tauri/gen/android >/tmp/agp-8-11-0.txt 2>/dev/null; then - echo "Tauri сгенерировал Android Gradle Plugin 8.11.0, которого нет в Google Maven. Патчим на ${ANDROID_GRADLE_PLUGIN_VERSION}." - find src-tauri/gen/android \ - -type f \ - \( -name '*.gradle' -o -name '*.gradle.kts' -o -name '*.toml' -o -name 'libs.versions.toml' \) \ - -print0 \ - | xargs -0 sed -i "s/8\\.11\\.0/${ANDROID_GRADLE_PLUGIN_VERSION}/g" +RESOLVED_AGP_VERSION="$(resolve_agp_version)" +echo "==> Используем Android Gradle Plugin: ${RESOLVED_AGP_VERSION}" +find src-tauri/gen/android \ + -type f \ + \( -name '*.gradle' -o -name '*.gradle.kts' -o -name '*.toml' -o -name 'libs.versions.toml' \) \ + -print0 \ + | xargs -0 sed -i -E "s/(com\\.android\\.tools\\.build:gradle:)[0-9]+\\.[0-9]+\\.[0-9]+/\\1${RESOLVED_AGP_VERSION}/g; s/(com\\.android\\.application[\"']? version[[:space:]]*=?[[:space:]]*[\"'])[0-9]+\\.[0-9]+\\.[0-9]+/\\1${RESOLVED_AGP_VERSION}/g; s/(agp[[:space:]]*=[[:space:]]*[\"'])[0-9]+\\.[0-9]+\\.[0-9]+/\\1${RESOLVED_AGP_VERSION}/g; s/(androidGradlePlugin[[:space:]]*=[[:space:]]*[\"'])[0-9]+\\.[0-9]+\\.[0-9]+/\\1${RESOLVED_AGP_VERSION}/g; s/(gradle[[:space:]]*=[[:space:]]*[\"'])[8]\\.11\\.[0-9]+/\\1${RESOLVED_AGP_VERSION}/g" + +if grep -R "com.android.tools.build:gradle:8.11\\|8.11.0\\|8.11.1" -n src-tauri/gen/android >/tmp/agp-leftovers.txt 2>/dev/null; then + echo "Остались ссылки на недоступный Android Gradle Plugin:" >&2 + cat /tmp/agp-leftovers.txt >&2 + exit 1 fi echo "==> Сборка Android APK"