1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-09 23:34:20 +00:00

Projucer: Bump minimum supported Android API level

This commit is contained in:
reuk 2025-03-17 14:00:09 +00:00
parent ae4bca24f4
commit 80b190b75d
No known key found for this signature in database
13 changed files with 22 additions and 29 deletions

View file

@ -74,7 +74,7 @@ of the target you wish to build.
- __Windows__: Windows 10 (x86_64, x86, Arm64, Arm64EC) - __Windows__: Windows 10 (x86_64, x86, Arm64, Arm64EC)
- __Linux__: Mainstream Linux distributions (x86_64, Arm64/aarch64, (32 bit Arm systems like armv7 should work but are not regularly tested)) - __Linux__: Mainstream Linux distributions (x86_64, Arm64/aarch64, (32 bit Arm systems like armv7 should work but are not regularly tested))
- __iOS__: iOS 12 (Arm64, Arm64e, x86_64 (Simulator)) - __iOS__: iOS 12 (Arm64, Arm64e, x86_64 (Simulator))
- __Android__: Android 5 - Lollipop (API Level 21) (arm64-v8a, armeabi-v7a, x86_64, x86) - __Android__: Android 7 - Nougat (API Level 24) (arm64-v8a, armeabi-v7a, x86_64, x86)
## Contributing ## Contributing

View file

@ -14,7 +14,7 @@ add_subdirectory (${OBOE_DIR} ./oboe)
add_library("cpufeatures" STATIC "${ANDROID_NDK}/sources/android/cpufeatures/cpu-features.c") add_library("cpufeatures" STATIC "${ANDROID_NDK}/sources/android/cpufeatures/cpu-features.c")
set_source_files_properties("${ANDROID_NDK}/sources/android/cpufeatures/cpu-features.c" PROPERTIES COMPILE_FLAGS "-Wno-sign-conversion -Wno-gnu-statement-expression") set_source_files_properties("${ANDROID_NDK}/sources/android/cpufeatures/cpu-features.c" PROPERTIES COMPILE_FLAGS "-Wno-sign-conversion -Wno-gnu-statement-expression")
add_definitions([[-DJUCE_ANDROID=1]] [[-DJUCE_ANDROID_API_VERSION=23]] [[-DJUCE_PUSH_NOTIFICATIONS=1]] [[-DJUCE_PUSH_NOTIFICATIONS_ACTIVITY="com/rmsl/juce/JuceActivity"]] [[-DJUCE_CONTENT_SHARING=1]] [[-DJUCE_ANDROID_GL_ES_VERSION_3_0=1]] [[-DJUCE_DEMO_RUNNER=1]] [[-DJUCE_UNIT_TESTS=1]] [[-DJUCER_ANDROIDSTUDIO_7F0E4A25=1]] [[-DJUCE_APP_VERSION=8.0.6]] [[-DJUCE_APP_VERSION_HEX=0x80006]]) add_definitions([[-DJUCE_ANDROID=1]] [[-DJUCE_ANDROID_API_VERSION=24]] [[-DJUCE_PUSH_NOTIFICATIONS=1]] [[-DJUCE_PUSH_NOTIFICATIONS_ACTIVITY="com/rmsl/juce/JuceActivity"]] [[-DJUCE_CONTENT_SHARING=1]] [[-DJUCE_ANDROID_GL_ES_VERSION_3_0=1]] [[-DJUCE_DEMO_RUNNER=1]] [[-DJUCE_UNIT_TESTS=1]] [[-DJUCER_ANDROIDSTUDIO_7F0E4A25=1]] [[-DJUCE_APP_VERSION=8.0.6]] [[-DJUCE_APP_VERSION_HEX=0x80006]])
include_directories( AFTER include_directories( AFTER
"../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src" "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src"

View file

@ -24,11 +24,11 @@ android {
defaultConfig { defaultConfig {
applicationId "com.rmsl.jucedemorunner" applicationId "com.rmsl.jucedemorunner"
minSdkVersion 23 minSdkVersion 24
targetSdkVersion 34 targetSdkVersion 34
externalNativeBuild { externalNativeBuild {
cmake { cmake {
arguments "-DANDROID_TOOLCHAIN=clang", "-DANDROID_PLATFORM=android-23", "-DANDROID_STL=c++_static", "-DANDROID_CPP_FEATURES=exceptions rtti", "-DANDROID_ARM_MODE=arm", "-DANDROID_ARM_NEON=TRUE", "-DANDROID_WEAK_API_DEFS=ON", "-DCMAKE_CXX_STANDARD=17", "-DCMAKE_CXX_EXTENSIONS=OFF" arguments "-DANDROID_TOOLCHAIN=clang", "-DANDROID_PLATFORM=android-24", "-DANDROID_STL=c++_static", "-DANDROID_CPP_FEATURES=exceptions rtti", "-DANDROID_ARM_MODE=arm", "-DANDROID_ARM_NEON=TRUE", "-DANDROID_WEAK_API_DEFS=ON", "-DCMAKE_CXX_STANDARD=17", "-DCMAKE_CXX_EXTENSIONS=OFF"
} }
} }
} }

View file

@ -93,7 +93,7 @@
<MODULEPATH id="juce_javascript" path="../../modules"/> <MODULEPATH id="juce_javascript" path="../../modules"/>
</MODULEPATHS> </MODULEPATHS>
</LINUX_MAKE> </LINUX_MAKE>
<ANDROIDSTUDIO targetFolder="Builds/Android" androidMinimumSDK="23" microphonePermissionNeeded="1" <ANDROIDSTUDIO targetFolder="Builds/Android" androidMinimumSDK="24" microphonePermissionNeeded="1"
androidExternalWriteNeeded="1" androidEnableContentSharing="1" androidExternalWriteNeeded="1" androidEnableContentSharing="1"
androidExtraAssetsFolder="../Assets" smallIcon="YyqWd2" bigIcon="YyqWd2" androidExtraAssetsFolder="../Assets" smallIcon="YyqWd2" bigIcon="YyqWd2"
cameraPermissionNeeded="1" androidReadMediaAudioPermission="1" cameraPermissionNeeded="1" androidReadMediaAudioPermission="1"

View file

@ -90,7 +90,7 @@
</LINUX_MAKE> </LINUX_MAKE>
<ANDROIDSTUDIO androidActivityClass="com.juce.audioperformancetest.AudioPerformanceTest" <ANDROIDSTUDIO androidActivityClass="com.juce.audioperformancetest.AudioPerformanceTest"
androidCpp11="1" targetFolder="Builds/Android" extraCompilerFlags="-mfpu=neon -mfloat-abi=hard -ffast-math -funroll-loops --param max-unroll-times=8 -mhard-float -D_NDK_MATH_NO_SOFTFP=1 -DJUCE_DISABLE_ASSERTIONS=1" androidCpp11="1" targetFolder="Builds/Android" extraCompilerFlags="-mfpu=neon -mfloat-abi=hard -ffast-math -funroll-loops --param max-unroll-times=8 -mhard-float -D_NDK_MATH_NO_SOFTFP=1 -DJUCE_DISABLE_ASSERTIONS=1"
gradleToolchainVersion="3.6" androidMinimumSDK="23"> gradleToolchainVersion="3.6" androidMinimumSDK="24">
<CONFIGURATIONS> <CONFIGURATIONS>
<CONFIGURATION name="Debug" isDebug="1" targetName="AudioPerformanceTest"/> <CONFIGURATION name="Debug" isDebug="1" targetName="AudioPerformanceTest"/>
<CONFIGURATION name="Release" isDebug="0" optimisation="6" <CONFIGURATION name="Release" isDebug="0" optimisation="6"

View file

@ -14,7 +14,7 @@ add_subdirectory (${OBOE_DIR} ./oboe)
add_library("cpufeatures" STATIC "${ANDROID_NDK}/sources/android/cpufeatures/cpu-features.c") add_library("cpufeatures" STATIC "${ANDROID_NDK}/sources/android/cpufeatures/cpu-features.c")
set_source_files_properties("${ANDROID_NDK}/sources/android/cpufeatures/cpu-features.c" PROPERTIES COMPILE_FLAGS "-Wno-sign-conversion -Wno-gnu-statement-expression") set_source_files_properties("${ANDROID_NDK}/sources/android/cpufeatures/cpu-features.c" PROPERTIES COMPILE_FLAGS "-Wno-sign-conversion -Wno-gnu-statement-expression")
add_definitions([[-DJUCE_ANDROID=1]] [[-DJUCE_ANDROID_API_VERSION=23]] [[-DJUCE_PUSH_NOTIFICATIONS=1]] [[-DJUCE_PUSH_NOTIFICATIONS_ACTIVITY="com/rmsl/juce/JuceActivity"]] [[-DJUCE_ANDROID_GL_ES_VERSION_3_0=1]] [[-DJUCER_ANDROIDSTUDIO_7F0E4A25=1]] [[-DJUCE_APP_VERSION=1.0.0]] [[-DJUCE_APP_VERSION_HEX=0x10000]]) add_definitions([[-DJUCE_ANDROID=1]] [[-DJUCE_ANDROID_API_VERSION=24]] [[-DJUCE_PUSH_NOTIFICATIONS=1]] [[-DJUCE_PUSH_NOTIFICATIONS_ACTIVITY="com/rmsl/juce/JuceActivity"]] [[-DJUCE_ANDROID_GL_ES_VERSION_3_0=1]] [[-DJUCER_ANDROIDSTUDIO_7F0E4A25=1]] [[-DJUCE_APP_VERSION=1.0.0]] [[-DJUCE_APP_VERSION_HEX=0x10000]])
include_directories( AFTER include_directories( AFTER
"../../../JuceLibraryCode" "../../../JuceLibraryCode"

View file

@ -24,11 +24,11 @@ android {
defaultConfig { defaultConfig {
applicationId "com.juce.audioperformancetest" applicationId "com.juce.audioperformancetest"
minSdkVersion 23 minSdkVersion 24
targetSdkVersion 34 targetSdkVersion 34
externalNativeBuild { externalNativeBuild {
cmake { cmake {
arguments "-DANDROID_TOOLCHAIN=clang", "-DANDROID_PLATFORM=android-23", "-DANDROID_STL=c++_static", "-DANDROID_CPP_FEATURES=exceptions rtti", "-DANDROID_ARM_MODE=arm", "-DANDROID_ARM_NEON=TRUE", "-DANDROID_WEAK_API_DEFS=ON", "-DCMAKE_CXX_STANDARD=17", "-DCMAKE_CXX_EXTENSIONS=OFF" arguments "-DANDROID_TOOLCHAIN=clang", "-DANDROID_PLATFORM=android-24", "-DANDROID_STL=c++_static", "-DANDROID_CPP_FEATURES=exceptions rtti", "-DANDROID_ARM_MODE=arm", "-DANDROID_ARM_NEON=TRUE", "-DANDROID_WEAK_API_DEFS=ON", "-DCMAKE_CXX_STANDARD=17", "-DCMAKE_CXX_EXTENSIONS=OFF"
} }
} }
} }

View file

@ -128,7 +128,7 @@
<MODULEPATH id="juce_dsp" path="../../modules"/> <MODULEPATH id="juce_dsp" path="../../modules"/>
</MODULEPATHS> </MODULEPATHS>
</XCODE_IPHONE> </XCODE_IPHONE>
<ANDROIDSTUDIO targetFolder="Builds/Android" androidMinimumSDK="23" androidInternetNeeded="1" <ANDROIDSTUDIO targetFolder="Builds/Android" androidMinimumSDK="24" androidInternetNeeded="1"
microphonePermissionNeeded="1" smallIcon="c97aUr" bigIcon="c97aUr" microphonePermissionNeeded="1" smallIcon="c97aUr" bigIcon="c97aUr"
androidExtraAssetsFolder="../../examples/Assets" androidBluetoothScanNeeded="1" androidExtraAssetsFolder="../../examples/Assets" androidBluetoothScanNeeded="1"
androidBluetoothAdvertiseNeeded="1" androidBluetoothConnectNeeded="1"> androidBluetoothAdvertiseNeeded="1" androidBluetoothConnectNeeded="1">

View file

@ -14,7 +14,7 @@ add_subdirectory (${OBOE_DIR} ./oboe)
add_library("cpufeatures" STATIC "${ANDROID_NDK}/sources/android/cpufeatures/cpu-features.c") add_library("cpufeatures" STATIC "${ANDROID_NDK}/sources/android/cpufeatures/cpu-features.c")
set_source_files_properties("${ANDROID_NDK}/sources/android/cpufeatures/cpu-features.c" PROPERTIES COMPILE_FLAGS "-Wno-sign-conversion -Wno-gnu-statement-expression") set_source_files_properties("${ANDROID_NDK}/sources/android/cpufeatures/cpu-features.c" PROPERTIES COMPILE_FLAGS "-Wno-sign-conversion -Wno-gnu-statement-expression")
add_definitions([[-DJUCE_ANDROID=1]] [[-DJUCE_ANDROID_API_VERSION=23]] [[-DJUCE_PUSH_NOTIFICATIONS=1]] [[-DJUCE_PUSH_NOTIFICATIONS_ACTIVITY="com/rmsl/juce/JuceActivity"]] [[-DJUCE_ANDROID_GL_ES_VERSION_3_0=1]] [[-DJUCER_ANDROIDSTUDIO_7F0E4A25=1]] [[-DJUCE_APP_VERSION=1.0.0]] [[-DJUCE_APP_VERSION_HEX=0x10000]]) add_definitions([[-DJUCE_ANDROID=1]] [[-DJUCE_ANDROID_API_VERSION=24]] [[-DJUCE_PUSH_NOTIFICATIONS=1]] [[-DJUCE_PUSH_NOTIFICATIONS_ACTIVITY="com/rmsl/juce/JuceActivity"]] [[-DJUCE_ANDROID_GL_ES_VERSION_3_0=1]] [[-DJUCER_ANDROIDSTUDIO_7F0E4A25=1]] [[-DJUCE_APP_VERSION=1.0.0]] [[-DJUCE_APP_VERSION_HEX=0x10000]])
include_directories( AFTER include_directories( AFTER
"../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src" "../../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src"

View file

@ -24,11 +24,11 @@ android {
defaultConfig { defaultConfig {
applicationId "com.juce.audiopluginhost" applicationId "com.juce.audiopluginhost"
minSdkVersion 23 minSdkVersion 24
targetSdkVersion 34 targetSdkVersion 34
externalNativeBuild { externalNativeBuild {
cmake { cmake {
arguments "-DANDROID_TOOLCHAIN=clang", "-DANDROID_PLATFORM=android-23", "-DANDROID_STL=c++_static", "-DANDROID_CPP_FEATURES=exceptions rtti", "-DANDROID_ARM_MODE=arm", "-DANDROID_ARM_NEON=TRUE", "-DANDROID_WEAK_API_DEFS=ON", "-DCMAKE_CXX_STANDARD=17", "-DCMAKE_CXX_EXTENSIONS=OFF" arguments "-DANDROID_TOOLCHAIN=clang", "-DANDROID_PLATFORM=android-24", "-DANDROID_STL=c++_static", "-DANDROID_CPP_FEATURES=exceptions rtti", "-DANDROID_ARM_MODE=arm", "-DANDROID_ARM_NEON=TRUE", "-DANDROID_WEAK_API_DEFS=ON", "-DCMAKE_CXX_STANDARD=17", "-DCMAKE_CXX_EXTENSIONS=OFF"
} }
} }
} }

View file

@ -14,7 +14,7 @@ add_subdirectory (${OBOE_DIR} ./oboe)
add_library("cpufeatures" STATIC "${ANDROID_NDK}/sources/android/cpufeatures/cpu-features.c") add_library("cpufeatures" STATIC "${ANDROID_NDK}/sources/android/cpufeatures/cpu-features.c")
set_source_files_properties("${ANDROID_NDK}/sources/android/cpufeatures/cpu-features.c" PROPERTIES COMPILE_FLAGS "-Wno-sign-conversion -Wno-gnu-statement-expression") set_source_files_properties("${ANDROID_NDK}/sources/android/cpufeatures/cpu-features.c" PROPERTIES COMPILE_FLAGS "-Wno-sign-conversion -Wno-gnu-statement-expression")
add_definitions([[-DJUCE_ANDROID=1]] [[-DJUCE_ANDROID_API_VERSION=21]] [[-DJUCE_PUSH_NOTIFICATIONS=1]] [[-DJUCE_PUSH_NOTIFICATIONS_ACTIVITY="com/rmsl/juce/JuceActivity"]] [[-DJUCE_ANDROID_GL_ES_VERSION_3_0=1]] [[-DJUCER_ANDROIDSTUDIO_7F0E4A25=1]] [[-DJUCE_APP_VERSION=1.0.0]] [[-DJUCE_APP_VERSION_HEX=0x10000]]) add_definitions([[-DJUCE_ANDROID=1]] [[-DJUCE_ANDROID_API_VERSION=24]] [[-DJUCE_PUSH_NOTIFICATIONS=1]] [[-DJUCE_PUSH_NOTIFICATIONS_ACTIVITY="com/rmsl/juce/JuceActivity"]] [[-DJUCE_ANDROID_GL_ES_VERSION_3_0=1]] [[-DJUCER_ANDROIDSTUDIO_7F0E4A25=1]] [[-DJUCE_APP_VERSION=1.0.0]] [[-DJUCE_APP_VERSION_HEX=0x10000]])
include_directories( AFTER include_directories( AFTER
"../../../JuceLibraryCode" "../../../JuceLibraryCode"

View file

@ -24,11 +24,11 @@ android {
defaultConfig { defaultConfig {
applicationId "com.juce.networkgraphicsdemo" applicationId "com.juce.networkgraphicsdemo"
minSdkVersion 21 minSdkVersion 24
targetSdkVersion 34 targetSdkVersion 34
externalNativeBuild { externalNativeBuild {
cmake { cmake {
arguments "-DANDROID_TOOLCHAIN=clang", "-DANDROID_PLATFORM=android-21", "-DANDROID_STL=c++_static", "-DANDROID_CPP_FEATURES=exceptions rtti", "-DANDROID_ARM_MODE=arm", "-DANDROID_ARM_NEON=TRUE", "-DANDROID_WEAK_API_DEFS=ON", "-DCMAKE_CXX_STANDARD=17", "-DCMAKE_CXX_EXTENSIONS=OFF" arguments "-DANDROID_TOOLCHAIN=clang", "-DANDROID_PLATFORM=android-24", "-DANDROID_STL=c++_static", "-DANDROID_CPP_FEATURES=exceptions rtti", "-DANDROID_ARM_MODE=arm", "-DANDROID_ARM_NEON=TRUE", "-DANDROID_WEAK_API_DEFS=ON", "-DCMAKE_CXX_STANDARD=17", "-DCMAKE_CXX_EXTENSIONS=OFF"
} }
} }
} }

View file

@ -131,7 +131,7 @@ public:
androidManifestCustomXmlElements (settings, Ids::androidManifestCustomXmlElements, getUndoManager()), androidManifestCustomXmlElements (settings, Ids::androidManifestCustomXmlElements, getUndoManager()),
androidGradleSettingsContent (settings, Ids::androidGradleSettingsContent, getUndoManager()), androidGradleSettingsContent (settings, Ids::androidGradleSettingsContent, getUndoManager()),
androidVersionCode (settings, Ids::androidVersionCode, getUndoManager(), "1"), androidVersionCode (settings, Ids::androidVersionCode, getUndoManager(), "1"),
androidMinimumSDK (settings, Ids::androidMinimumSDK, getUndoManager(), "21"), androidMinimumSDK (settings, Ids::androidMinimumSDK, getUndoManager(), "24"),
androidTargetSDK (settings, Ids::androidTargetSDK, getUndoManager(), "34"), androidTargetSDK (settings, Ids::androidTargetSDK, getUndoManager(), "34"),
androidTheme (settings, Ids::androidTheme, getUndoManager()), androidTheme (settings, Ids::androidTheme, getUndoManager()),
androidExtraAssetsFolder (settings, Ids::androidExtraAssetsFolder, getUndoManager()), androidExtraAssetsFolder (settings, Ids::androidExtraAssetsFolder, getUndoManager()),
@ -1145,7 +1145,7 @@ private:
"An integer value that represents the version of the application code, relative to other versions."); "An integer value that represents the version of the application code, relative to other versions.");
props.add (new TextPropertyComponent (androidMinimumSDK, "Minimum SDK Version", 32, false), props.add (new TextPropertyComponent (androidMinimumSDK, "Minimum SDK Version", 32, false),
"The number of the minimum version of the Android SDK that the app requires (must be 21 or higher)."); "The number of the minimum version of the Android SDK that the app requires (must be 24 or higher).");
props.add (new TextPropertyComponent (androidTargetSDK, "Target SDK Version", 32, false), props.add (new TextPropertyComponent (androidTargetSDK, "Target SDK Version", 32, false),
"The number of the version of the Android SDK that the app is targeting."); "The number of the version of the Android SDK that the app is targeting.");
@ -1571,8 +1571,7 @@ private:
if (isContentSharingEnabled()) if (isContentSharingEnabled())
defines.set ("JUCE_CONTENT_SHARING", "1"); defines.set ("JUCE_CONTENT_SHARING", "1");
if (supportsGLv3()) defines.set ("JUCE_ANDROID_GL_ES_VERSION_3_0", "1");
defines.set ("JUCE_ANDROID_GL_ES_VERSION_3_0", "1");
if (areRemoteNotificationsEnabled()) if (areRemoteNotificationsEnabled())
{ {
@ -1628,7 +1627,7 @@ private:
libraries.add ("log"); libraries.add ("log");
libraries.add ("android"); libraries.add ("android");
libraries.add (supportsGLv3() ? "GLESv3" : "GLESv2"); libraries.add ("GLESv3");
libraries.add ("EGL"); libraries.add ("EGL");
return libraries; return libraries;
@ -1812,7 +1811,7 @@ private:
if (glVersion == nullptr) if (glVersion == nullptr)
glVersion = manifest.createNewChildElement ("uses-feature"); glVersion = manifest.createNewChildElement ("uses-feature");
setAttributeIfNotPresent (*glVersion, "android:glEsVersion", (static_cast<int> (androidMinimumSDK.get()) >= 18 ? "0x00030000" : "0x00020000")); setAttributeIfNotPresent (*glVersion, "android:glEsVersion", "0x00030000");
setAttributeIfNotPresent (*glVersion, "android:required", "true"); setAttributeIfNotPresent (*glVersion, "android:required", "true");
} }
} }
@ -1851,8 +1850,7 @@ private:
if (androidScreenOrientation.get() == "landscape") if (androidScreenOrientation.get() == "landscape")
{ {
setAttributeIfNotPresent (*act, "android:screenOrientation", setAttributeIfNotPresent (*act, "android:screenOrientation", "userLandscape");
static_cast<int> (androidMinimumSDK.get()) < 18 ? "sensorLandscape" : "userLandscape");
} }
else else
{ {
@ -2015,11 +2013,6 @@ private:
return escapedArray.joinIntoString (", "); return escapedArray.joinIntoString (", ");
} }
bool supportsGLv3() const
{
return (static_cast<int> (androidMinimumSDK.get()) >= 18);
}
//============================================================================== //==============================================================================
const File AndroidExecutable; const File AndroidExecutable;