Files
IdP/tauri_app/docker/populate-offline-agp.sh
lendry f1bba24faa Complete offline Android APK build for isolated LAN servers.
Bundle AndroidX, Kotlin Gradle plugin, and SDK patch scripts so Gradle no longer needs Google Maven at runtime. Bake Gradle wrapper into Docker image during build when network is available.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-26 23:26:22 +03:00

41 lines
1.5 KiB
Bash

#!/usr/bin/env bash
# Download AGP + AndroidX runtime deps into offline-maven for isolated LAN builds.
# Run once on a machine with internet, then commit tauri_app/docker/offline-maven/.
set -euo pipefail
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
AGP_VERSION="${ANDROID_GRADLE_PLUGIN_VERSION:-8.11.0}"
RESOLVER="${ROOT}/docker/agp-resolver"
OFFLINE="${ROOT}/docker/offline-maven"
if [ ! -x "${RESOLVER}/gradlew" ]; then
echo "Gradle wrapper not found in ${RESOLVER}" >&2
exit 1
fi
echo "==> Resolving AGP ${AGP_VERSION} + AndroidX deps into ${OFFLINE}"
cd "${RESOLVER}"
chmod +x ./gradlew
sed -i 's/\r$//' ./gradlew 2>/dev/null || true
./gradlew exportAllOfflineMaven --no-daemon -PagpVersion="${AGP_VERSION}"
required=(
"${OFFLINE}/com/android/tools/build/builder/${AGP_VERSION}/builder-${AGP_VERSION}.pom"
"${OFFLINE}/androidx/webkit/webkit/1.14.0/webkit-1.14.0.pom"
"${OFFLINE}/androidx/appcompat/appcompat/1.7.1/appcompat-1.7.1.pom"
"${OFFLINE}/androidx/browser/browser/1.8.0/browser-1.8.0.pom"
"${OFFLINE}/org/jetbrains/kotlin/kotlin-gradle-plugin/1.9.25/kotlin-gradle-plugin-1.9.25.pom"
)
for file in "${required[@]}"; do
if [ ! -f "${file}" ]; then
echo "Missing required offline artifact: ${file}" >&2
exit 1
fi
done
TOTAL_SIZE="$(du -sh "${OFFLINE}" | awk '{print $1}')"
ARTIFACTS="$(find "${OFFLINE}" \( -name '*.jar' -o -name '*.aar' \) | wc -l | tr -d ' ')"
echo "==> Offline Maven cache ready: ${ARTIFACTS} jar/aar, total ${TOTAL_SIZE}"
echo "==> Commit tauri_app/docker/offline-maven/ and push to the server"