From 8c264cc8bb52bb2cc6088b69cf263fa407818804 Mon Sep 17 00:00:00 2001 From: reuk Date: Fri, 30 Jan 2026 14:54:49 +0000 Subject: [PATCH] Projucer: Enforce old Java language version for Android projects Although Java bytecode/language features are supported on higher Android API levels, JUCE must support back to Android 24, which requires Java version 8 or earlier. --- examples/DemoRunner/Builds/Android/app/build.gradle | 1 + examples/DemoRunner/Builds/Android/settings.gradle | 3 +++ extras/AudioPerformanceTest/Builds/Android/app/build.gradle | 1 + extras/AudioPerformanceTest/Builds/Android/settings.gradle | 3 +++ extras/AudioPluginHost/Builds/Android/app/build.gradle | 1 + extras/AudioPluginHost/Builds/Android/settings.gradle | 3 +++ extras/NetworkGraphicsDemo/Builds/Android/app/build.gradle | 1 + extras/NetworkGraphicsDemo/Builds/Android/settings.gradle | 3 +++ .../Source/ProjectSaving/jucer_ProjectExport_Android.h | 6 ++++++ 9 files changed, 22 insertions(+) diff --git a/examples/DemoRunner/Builds/Android/app/build.gradle b/examples/DemoRunner/Builds/Android/app/build.gradle index 4417c4a5ef..a8bb4e7b24 100644 --- a/examples/DemoRunner/Builds/Android/app/build.gradle +++ b/examples/DemoRunner/Builds/Android/app/build.gradle @@ -1,5 +1,6 @@ apply plugin: 'com.android.application' +java.toolchain.languageVersion = JavaLanguageVersion.of(8) def ndkVersionString = "28.1.13356709" android { diff --git a/examples/DemoRunner/Builds/Android/settings.gradle b/examples/DemoRunner/Builds/Android/settings.gradle index f023a56a46..cfefd83370 100644 --- a/examples/DemoRunner/Builds/Android/settings.gradle +++ b/examples/DemoRunner/Builds/Android/settings.gradle @@ -1,2 +1,5 @@ +plugins { + id 'org.gradle.toolchains.foojay-resolver-convention' version '1.0.0' +} rootProject.name = 'DemoRunner' include ':app' \ No newline at end of file diff --git a/extras/AudioPerformanceTest/Builds/Android/app/build.gradle b/extras/AudioPerformanceTest/Builds/Android/app/build.gradle index e31a18a9f9..dac652f32a 100644 --- a/extras/AudioPerformanceTest/Builds/Android/app/build.gradle +++ b/extras/AudioPerformanceTest/Builds/Android/app/build.gradle @@ -1,5 +1,6 @@ apply plugin: 'com.android.application' +java.toolchain.languageVersion = JavaLanguageVersion.of(8) def ndkVersionString = "28.1.13356709" android { diff --git a/extras/AudioPerformanceTest/Builds/Android/settings.gradle b/extras/AudioPerformanceTest/Builds/Android/settings.gradle index 0e06f0600f..63d80088b7 100644 --- a/extras/AudioPerformanceTest/Builds/Android/settings.gradle +++ b/extras/AudioPerformanceTest/Builds/Android/settings.gradle @@ -1,2 +1,5 @@ +plugins { + id 'org.gradle.toolchains.foojay-resolver-convention' version '1.0.0' +} rootProject.name = 'AudioPerformanceTest' include ':app' \ No newline at end of file diff --git a/extras/AudioPluginHost/Builds/Android/app/build.gradle b/extras/AudioPluginHost/Builds/Android/app/build.gradle index 58e8c87ea4..c199e80bb6 100644 --- a/extras/AudioPluginHost/Builds/Android/app/build.gradle +++ b/extras/AudioPluginHost/Builds/Android/app/build.gradle @@ -1,5 +1,6 @@ apply plugin: 'com.android.application' +java.toolchain.languageVersion = JavaLanguageVersion.of(8) def ndkVersionString = "28.1.13356709" android { diff --git a/extras/AudioPluginHost/Builds/Android/settings.gradle b/extras/AudioPluginHost/Builds/Android/settings.gradle index e0f55683b2..d5fe246945 100644 --- a/extras/AudioPluginHost/Builds/Android/settings.gradle +++ b/extras/AudioPluginHost/Builds/Android/settings.gradle @@ -1,2 +1,5 @@ +plugins { + id 'org.gradle.toolchains.foojay-resolver-convention' version '1.0.0' +} rootProject.name = 'AudioPluginHost' include ':app' \ No newline at end of file diff --git a/extras/NetworkGraphicsDemo/Builds/Android/app/build.gradle b/extras/NetworkGraphicsDemo/Builds/Android/app/build.gradle index d96a342d0d..ce9469f2ea 100644 --- a/extras/NetworkGraphicsDemo/Builds/Android/app/build.gradle +++ b/extras/NetworkGraphicsDemo/Builds/Android/app/build.gradle @@ -1,5 +1,6 @@ apply plugin: 'com.android.application' +java.toolchain.languageVersion = JavaLanguageVersion.of(8) def ndkVersionString = "28.1.13356709" android { diff --git a/extras/NetworkGraphicsDemo/Builds/Android/settings.gradle b/extras/NetworkGraphicsDemo/Builds/Android/settings.gradle index 988df402a7..28049bf38d 100644 --- a/extras/NetworkGraphicsDemo/Builds/Android/settings.gradle +++ b/extras/NetworkGraphicsDemo/Builds/Android/settings.gradle @@ -1,2 +1,5 @@ +plugins { + id 'org.gradle.toolchains.foojay-resolver-convention' version '1.0.0' +} rootProject.name = 'NetworkGraphicsDemo' include ':app' \ No newline at end of file diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Android.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Android.h index 2d54a3f81c..bf1739e21f 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Android.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Android.h @@ -653,6 +653,10 @@ private: MemoryOutputStream mo; mo.setNewLineString (getNewLineString()); + mo << "plugins {" << newLine + << " id 'org.gradle.toolchains.foojay-resolver-convention' version '1.0.0'" << newLine + << "}" << newLine; + mo << "rootProject.name = " << "\'" << escapeQuotes (projectName) << "\'" << newLine; mo << (isLibrary() ? "include ':lib'" : "include ':app'"); @@ -698,6 +702,8 @@ private: mo << "apply plugin: 'com.android." << (isLibrary() ? "library" : "application") << "'" << newLine << newLine; + // Language version 8 (or lower) is required for compatibility with Android 24 + mo << "java.toolchain.languageVersion = JavaLanguageVersion.of(8)" << newLine; // NDK 26 is required for ANDROID_WEAK_API_DEFS, which is in turn required for weak-linking AFontMatcher mo << "def ndkVersionString = \"28.1.13356709\"" << newLine << newLine;