From cc58a09c09909771471fb663de573ef5d0c4d026 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Thu, 24 Aug 2023 08:23:06 -0700
Subject: [PATCH] Updated to Android minSdkVersion 19 and targetSdkVersion 34
This is updated to meet the latest requirements for apps on the Google Play store
(cherry picked from commit 8e27a693706a76cbe0fcd1b877a2847afe19c513)
---
android-project/app/build.gradle | 20 +++++++++----------
.../app/src/main/AndroidManifest.xml | 1 -
android-project/build.gradle | 2 +-
.../gradle/wrapper/gradle-wrapper.properties | 2 +-
docs/README-android.md | 14 ++++++-------
5 files changed, 19 insertions(+), 20 deletions(-)
diff --git a/android-project/app/build.gradle b/android-project/app/build.gradle
index baa0edc8de14..c6043616d933 100644
--- a/android-project/app/build.gradle
+++ b/android-project/app/build.gradle
@@ -8,22 +8,22 @@ else {
}
android {
- compileSdkVersion 31
+ if (buildAsApplication) {
+ namespace "org.libsdl.app"
+ }
+ compileSdkVersion 34
defaultConfig {
- if (buildAsApplication) {
- applicationId "org.libsdl.app"
- }
- minSdkVersion 16
- targetSdkVersion 31
+ minSdkVersion 19
+ targetSdkVersion 34
versionCode 1
versionName "1.0"
externalNativeBuild {
ndkBuild {
- arguments "APP_PLATFORM=android-16"
+ arguments "APP_PLATFORM=android-19"
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
}
// cmake {
- // arguments "-DANDROID_APP_PLATFORM=android-16", "-DANDROID_STL=c++_static"
+ // arguments "-DANDROID_APP_PLATFORM=android-19", "-DANDROID_STL=c++_static"
// // abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
// abiFilters 'arm64-v8a'
// }
@@ -53,10 +53,10 @@ android {
}
}
- lintOptions {
+ lint {
abortOnError false
}
-
+
if (buildAsLibrary) {
libraryVariants.all { variant ->
variant.outputs.each { output ->
diff --git a/android-project/app/src/main/AndroidManifest.xml b/android-project/app/src/main/AndroidManifest.xml
index d997afe4a49d..e0d033410e14 100644
--- a/android-project/app/src/main/AndroidManifest.xml
+++ b/android-project/app/src/main/AndroidManifest.xml
@@ -3,7 +3,6 @@
com.gamemaker.game
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="org.libsdl.app"
android:versionCode="1"
android:versionName="1.0"
android:installLocation="auto">
diff --git a/android-project/build.gradle b/android-project/build.gradle
index 6f629c8aa758..2c911c6ff155 100644
--- a/android-project/build.gradle
+++ b/android-project/build.gradle
@@ -6,7 +6,7 @@ buildscript {
google()
}
dependencies {
- classpath 'com.android.tools.build:gradle:7.0.3'
+ classpath 'com.android.tools.build:gradle:8.1.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
diff --git a/android-project/gradle/wrapper/gradle-wrapper.properties b/android-project/gradle/wrapper/gradle-wrapper.properties
index ada5af48a6c4..5b9d75997372 100644
--- a/android-project/gradle/wrapper/gradle-wrapper.properties
+++ b/android-project/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
#Thu Nov 11 18:20:34 PST 2021
distributionBase=GRADLE_USER_HOME
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.3-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
diff --git a/docs/README-android.md b/docs/README-android.md
index dc7eb5bf25f7..5e25cab77078 100644
--- a/docs/README-android.md
+++ b/docs/README-android.md
@@ -13,13 +13,13 @@ supported, but you can use the "android-project-ant" directory as a template.
Requirements
================================================================================
-Android SDK (version 31 or later)
+Android SDK (version 34 or later)
https://developer.android.com/sdk/index.html
Android NDK r15c or later
https://developer.android.com/tools/sdk/ndk/index.html
-Minimum API level supported by SDL: 16 (Android 4.1)
+Minimum API level supported by SDL: 19 (Android 4.4)
How the port works
@@ -431,13 +431,13 @@ The Tegra Graphics Debugger is available from NVidia here:
https://developer.nvidia.com/tegra-graphics-debugger
-Why is API level 16 the minimum required?
+Why is API level 19 the minimum required?
================================================================================
-The latest NDK toolchain doesn't support targeting earlier than API level 16.
-As of this writing, according to https://developer.android.com/about/dashboards/index.html
-about 99% of the Android devices accessing Google Play support API level 16 or
-higher (January 2018).
+The latest NDK toolchain doesn't support targeting earlier than API level 19.
+As of this writing, according to https://www.composables.com/tools/distribution-chart
+about 99.7% of the Android devices accessing Google Play support API level 19 or
+higher (August 2023).
A note regarding the use of the "dirty rectangles" rendering technique