55 lines
1.6 KiB
PowerShell
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"
|
|
}
|