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>
41 lines
1.5 KiB
Bash
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"
|