#!/usr/bin/env bash # Pre-download Android Gradle Plugin into a local Maven repo inside the image. set -euo pipefail AGP_VERSION="${ANDROID_GRADLE_PLUGIN_VERSION:-8.11.0}" LOCAL_REPO="${ANDROID_AGP_LOCAL_REPO:-/opt/android-agp-maven}" BUNDLED_REPO="${ANDROID_AGP_BUNDLED_REPO:-/workspace/tauri_app/docker/offline-maven}" BUNDLED_ARTIFACT="${BUNDLED_REPO}/com/android/tools/build/gradle/${AGP_VERSION}/gradle-${AGP_VERSION}.jar" copy_bundled() { if [ ! -f "${BUNDLED_ARTIFACT}" ]; then return 1 fi if [ ! -f "${BUNDLED_REPO}/com/android/tools/build/builder/${AGP_VERSION}/builder-${AGP_VERSION}.pom" ]; then echo "Bundled AGP cache is incomplete (missing builder:${AGP_VERSION}). Run populate-offline-agp.sh on a machine with internet." >&2 return 1 fi if [ ! -f "${BUNDLED_REPO}/androidx/webkit/webkit/1.14.0/webkit-1.14.0.pom" ]; then echo "Bundled AndroidX cache is incomplete (missing webkit:1.14.0). Run populate-offline-agp.sh on a machine with internet." >&2 return 1 fi mkdir -p "${LOCAL_REPO}" cp -a "${BUNDLED_REPO}/." "${LOCAL_REPO}/" echo "==> AGP ${AGP_VERSION} copied from bundled offline cache (${BUNDLED_REPO})" return 0 } try_download() { local base_url="$1" local dest_dir="${LOCAL_REPO}/com/android/tools/build/gradle/${AGP_VERSION}" mkdir -p "${dest_dir}" if curl -fsSL --connect-timeout 20 --max-time 120 \ "${base_url}/com/android/tools/build/gradle/${AGP_VERSION}/gradle-${AGP_VERSION}.pom" \ -o "${dest_dir}/gradle-${AGP_VERSION}.pom"; then curl -fsSL --connect-timeout 20 --max-time 600 \ "${base_url}/com/android/tools/build/gradle/${AGP_VERSION}/gradle-${AGP_VERSION}.jar" \ -o "${dest_dir}/gradle-${AGP_VERSION}.jar" echo "${base_url}" return 0 fi return 1 } echo "==> Prefetch Android Gradle Plugin ${AGP_VERSION}" if copy_bundled; then exit 0 fi MIRROR="" for base in \ "https://maven.google.com" \ "https://dl.google.com/android/maven2" \ "https://dl.google.com/dl/android/maven2"; do if MIRROR="$(try_download "${base}")"; then echo "==> AGP ${AGP_VERSION} cached from ${MIRROR}" break fi done if [ -z "${MIRROR}" ]; then echo "Не удалось получить Android Gradle Plugin ${AGP_VERSION}." >&2 echo "Нет bundled-кэша в ${BUNDLED_REPO} и Google Maven недоступен (404/сеть)." >&2 echo "На машине с интернетом выполните: tauri_app/docker/populate-offline-agp.sh" >&2 exit 1 fi cat > "${LOCAL_REPO}/README.txt" < Local AGP repo: ${LOCAL_REPO}"