Files
benchpress/frontend/android/build-apk.ps1
T
2026-10-11 14:12:10 +03:00

55 lines
1.6 KiB
PowerShell

# Builds a debug APK with a JDK that Gradle 8.14 / AGP 8.13 can run.
# The Java on PATH is Java 8. Android Studio's bundled JBR is Java 25,
# which this Gradle version does not support. Temurin 21 is the right runtime.
$ErrorActionPreference = "Stop"
Set-Location $PSScriptRoot
function Get-JavaMajor([string]$JdkDir) {
$release = Join-Path $JdkDir "release"
if (-not (Test-Path $release)) { return 0 }
$line = Select-String -Path $release -Pattern 'JAVA_VERSION="(\d+)' | Select-Object -First 1
if (-not $line) { return 0 }
return [int]$line.Matches[0].Groups[1].Value
}
function Find-Jdk {
$candidates = @(
"$env:USERPROFILE\.jdks\temurin-21",
"$env:USERPROFILE\.jdks\temurin-17",
${env:JAVA_HOME}
) | Where-Object { $_ }
foreach ($dir in $candidates) {
$java = Join-Path $dir "bin\java.exe"
if (-not (Test-Path $java)) { continue }
$major = Get-JavaMajor $dir
if ($major -ge 17 -and $major -le 24) {
return $dir
}
}
return $null
}
$jdk = Find-Jdk
if (-not $jdk) {
Write-Error @"
No JDK 17-21 found.
Install Temurin 21, or point JAVA_HOME at one.
Android Studio's bundled JBR is Java 25; Gradle 8.14.3 cannot use it.
The Java on PATH is Java 8; AGP 8.13 cannot use it either.
"@
}
$env:JAVA_HOME = $jdk
$env:PATH = "$(Join-Path $jdk 'bin');$env:PATH"
Write-Host "JAVA_HOME=$env:JAVA_HOME"
& (Join-Path $PSScriptRoot "gradlew.bat") assembleDebug @args
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
$apk = Join-Path $PSScriptRoot "app\build\outputs\apk\debug\app-debug.apk"
if (Test-Path $apk) {
Write-Host "APK: $apk"
}