fix: force JAVA_HOME to ~/jdk21 when system Java ≥ 25
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 <noreply@anthropic.com>
This commit is contained in:
@@ -26,7 +26,7 @@ Build is fully local — no expo.dev account or EAS cloud required.
|
|||||||
|------|---------|
|
|------|---------|
|
||||||
| Node.js | 20 LTS |
|
| Node.js | 20 LTS |
|
||||||
| pnpm | 10+ |
|
| pnpm | 10+ |
|
||||||
| Java (JDK) | 17+ |
|
| Java (JDK) | 17–24 (Java 25+ not yet supported by Gradle 8) |
|
||||||
| Android SDK | see below |
|
| Android SDK | see below |
|
||||||
|
|
||||||
No expo.dev account needed for builds.
|
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
|
### 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
|
```bash
|
||||||
cd artifacts/postiz-mobile
|
cd artifacts/postiz-mobile
|
||||||
|
|||||||
@@ -48,7 +48,20 @@ KEYSTORE_PATH_EXPANDED="${KEYSTORE_PATH_EXPANDED/#~/$HOME}"
|
|||||||
[ ! -f "$KEYSTORE_PATH_EXPANDED" ] && \
|
[ ! -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"
|
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
|
if [ -z "${ANDROID_HOME:-}" ]; then
|
||||||
for candidate in "$HOME/android-sdk" "$HOME/Android/Sdk" "/opt/android-sdk"; do
|
for candidate in "$HOME/android-sdk" "$HOME/Android/Sdk" "/opt/android-sdk"; do
|
||||||
if [ -d "$candidate/platform-tools" ]; then
|
if [ -d "$candidate/platform-tools" ]; then
|
||||||
@@ -65,7 +78,7 @@ fi
|
|||||||
export PATH="$PATH:$ANDROID_HOME/platform-tools:$ANDROID_HOME/cmdline-tools/latest/bin"
|
export PATH="$PATH:$ANDROID_HOME/platform-tools:$ANDROID_HOME/cmdline-tools/latest/bin"
|
||||||
info "Android SDK: $ANDROID_HOME"
|
info "Android SDK: $ANDROID_HOME"
|
||||||
|
|
||||||
# ─── 3. expo prebuild ──────────────────────────────────────────────────────
|
# ─── 4. expo prebuild ──────────────────────────────────────────────────────
|
||||||
info "Running expo prebuild (Android)…"
|
info "Running expo prebuild (Android)…"
|
||||||
cd "$SCRIPT_DIR"
|
cd "$SCRIPT_DIR"
|
||||||
pnpm exec expo prebuild --platform android --clean --no-install
|
pnpm exec expo prebuild --platform android --clean --no-install
|
||||||
|
|||||||
Reference in New Issue
Block a user