Android env: require JDK 21/17 by version, since Studio now bundles JBR 25

Check each JDK candidate's major version instead of assuming Android Studio's
JBR is 21, look for Adoptium temurin-{21,17}-jdk (Fedora 44 dropped
java-21-openjdk), and propagate android-env.sh failures to scripts that
source it so fdroid-publish.sh stops before building.
This commit is contained in:
2026-10-16 22:08:47 -05:00
parent 8301371679
commit 89378a41fb
3 changed files with 39 additions and 24 deletions

View File

@@ -36,19 +36,24 @@ _mtgc_android_env() {
return 1
fi
# --- JDK: Gradle/AGP reject very new JDKs; prefer Studio's bundled JBR 21 ---
# --- JDK: Gradle/AGP reject very new JDKs. Studio's bundled JBR is preferred,
# but newer Studio releases bundle JBR 25, so check each candidate's version.
for d in \
"$HOME/.local/share/JetBrains/Toolbox/apps/android-studio/jbr" \
"$HOME/.local/share/JetBrains/Toolbox/apps/android-studio"/*/jbr \
"$HOME/android-studio/jbr" \
/opt/android-studio/jbr \
/usr/lib/jvm/java-21-openjdk /usr/lib/jvm/java-21-openjdk-* \
/usr/lib/jvm/java-17-openjdk /usr/lib/jvm/java-17-openjdk-*
/usr/lib/jvm/java-21-openjdk /usr/lib/jvm/java-21-openjdk-* /usr/lib/jvm/temurin-21-jdk* \
/usr/lib/jvm/java-17-openjdk /usr/lib/jvm/java-17-openjdk-* /usr/lib/jvm/temurin-17-jdk*
do
if [ -x "$d/bin/javac" ]; then jdk="$d"; break; fi
[ -x "$d/bin/javac" ] || continue
case "$(sed -n 's/^JAVA_VERSION="\([0-9]*\).*/\1/p' "$d/release" 2>/dev/null)" in
21 | 17) jdk="$d"; break ;;
esac
done
if [ -z "$jdk" ]; then
echo "android-env: no JDK 21/17 found (Gradle rejects the system default)" >&2
echo "android-env: no JDK 21/17 found (Gradle rejects newer ones, incl. Studio's JBR 25)" >&2
echo "android-env: sudo dnf install temurin-21-jdk" >&2
return 1
fi
@@ -67,4 +72,7 @@ _mtgc_android_env() {
}
_mtgc_android_env
_mtgc_rc=$?
unset -f _mtgc_android_env
# Pass the failure on so `set -e` scripts that source this stop here.
return "$_mtgc_rc" 2>/dev/null || exit "$_mtgc_rc"