From aaf6b2aa07fdf7b5db5ffa62a64dda5dfb2152b4 Mon Sep 17 00:00:00 2001 From: billisdead Date: Sun, 7 Jun 2026 20:52:54 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20force=20JAVA=5FHOME=20to=20~/jdk21=20whe?= =?UTF-8?q?n=20system=20Java=20=E2=89=A5=2025?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Gradle 8.x supports up to Java 24. Fedora 44 ships Java 25 by default, causing "Unsupported class file major version 69" at build time. build-apk.sh now auto-detects system Java version and falls back to ~/jdk21 (Temurin 21 LTS) when Java ≥ 25 is detected. README documents the one-time JDK 21 install step. Co-Authored-By: Claude Sonnet 4.6 --- artifacts/postiz-mobile/README.md | 16 ++++++++++++++-- artifacts/postiz-mobile/build-apk.sh | 17 +++++++++++++++-- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/artifacts/postiz-mobile/README.md b/artifacts/postiz-mobile/README.md index 01f812a..b9d7c7e 100644 --- a/artifacts/postiz-mobile/README.md +++ b/artifacts/postiz-mobile/README.md @@ -26,7 +26,7 @@ Build is fully local — no expo.dev account or EAS cloud required. |------|---------| | Node.js | 20 LTS | | pnpm | 10+ | -| Java (JDK) | 17+ | +| Java (JDK) | 17–24 (Java 25+ not yet supported by Gradle 8) | | Android SDK | see below | No expo.dev account needed for builds. @@ -57,7 +57,19 @@ Scan the QR code with Expo Go on Android to preview the app live. ### First-time setup -**1. Android SDK** +**1. Java 21 LTS** + +Gradle 8 requires Java ≤ 24. If the system Java is 25+ (Fedora 44), install Temurin 21 locally: + +```bash +wget -O /tmp/jdk21.tar.gz \ + "https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.7%2B6/OpenJDK21U-jdk_x64_linux_hotspot_21.0.7_6.tar.gz" +mkdir -p ~/jdk21 && tar -xzf /tmp/jdk21.tar.gz -C ~/jdk21 --strip-components=1 +``` + +`build-apk.sh` will use `~/jdk21` automatically if the system Java is ≥ 25. + +**2. Android SDK** ```bash cd artifacts/postiz-mobile diff --git a/artifacts/postiz-mobile/build-apk.sh b/artifacts/postiz-mobile/build-apk.sh index 186d410..935694f 100755 --- a/artifacts/postiz-mobile/build-apk.sh +++ b/artifacts/postiz-mobile/build-apk.sh @@ -48,7 +48,20 @@ KEYSTORE_PATH_EXPANDED="${KEYSTORE_PATH_EXPANDED/#~/$HOME}" [ ! -f "$KEYSTORE_PATH_EXPANDED" ] && \ abort "Keystore not found: $KEYSTORE_PATH_EXPANDED\n\nExport it from EAS:\n eas credentials --platform android\n → Download existing keystore → save to $KEYSTORE_PATH_EXPANDED" -# ─── 2. Android SDK ──────────────────────────────────────────────────────── +# ─── 2. Java 17/21 — Gradle requires Java ≤ 24 (system Java 25 is too new) ── +# Use ~/jdk21 if present, otherwise rely on JAVA_HOME already being set correctly. +if [ -z "${JAVA_HOME:-}" ] || "$JAVA_HOME/bin/java" -version 2>&1 | grep -qE '"(2[5-9]|[3-9][0-9])\.' ; then + if [ -d "$HOME/jdk21" ]; then + export JAVA_HOME="$HOME/jdk21" + export PATH="$JAVA_HOME/bin:$PATH" + info "Using local JDK 21: $JAVA_HOME" + else + abort "Java 25+ detected but Gradle only supports ≤ Java 24.\n\nInstall JDK 21 locally:\n wget -O /tmp/jdk21.tar.gz https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.7%2B6/OpenJDK21U-jdk_x64_linux_hotspot_21.0.7_6.tar.gz\n mkdir -p ~/jdk21 && tar -xzf /tmp/jdk21.tar.gz -C ~/jdk21 --strip-components=1" + fi +fi +info "Java: $("$JAVA_HOME/bin/java" -version 2>&1 | head -1)" + +# ─── 3. Android SDK ──────────────────────────────────────────────────────── if [ -z "${ANDROID_HOME:-}" ]; then for candidate in "$HOME/android-sdk" "$HOME/Android/Sdk" "/opt/android-sdk"; do if [ -d "$candidate/platform-tools" ]; then @@ -65,7 +78,7 @@ fi export PATH="$PATH:$ANDROID_HOME/platform-tools:$ANDROID_HOME/cmdline-tools/latest/bin" info "Android SDK: $ANDROID_HOME" -# ─── 3. expo prebuild ────────────────────────────────────────────────────── +# ─── 4. expo prebuild ────────────────────────────────────────────────────── info "Running expo prebuild (Android)…" cd "$SCRIPT_DIR" pnpm exec expo prebuild --platform android --clean --no-install