From 4e82c3795fa2d386007ed16ff09af11afd3b2a99 Mon Sep 17 00:00:00 2001 From: Withalion Date: Wed, 30 Jul 2025 17:07:07 +0300 Subject: [PATCH 1/6] Increase android target SDK --- CMakeLists.txt | 2 +- app/android/src/uk/co/lutraconsulting/InputActivity.java | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6145e35be..87a3c674a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,7 +22,7 @@ if (DEFINED ENV{INPUT_SDK_ANDROID_BASE}) set(ANDROID_STL "c++_shared") # Target/Minimum API levels for Android, used as Input target properties - set(INPUT_ANDROID_TARGET_SDK_VERSION "34") + set(INPUT_ANDROID_TARGET_SDK_VERSION "35") set(INPUT_ANDROID_MIN_SDK_VERSION "${ANDROIDAPI}") set(INPUT_ANDROID_NDK_PATH "$ENV{ANDROID_NDK_ROOT}") if (NOT INPUT_ANDROID_NDK_PATH) diff --git a/app/android/src/uk/co/lutraconsulting/InputActivity.java b/app/android/src/uk/co/lutraconsulting/InputActivity.java index a6c4224ab..ccbeb7c0f 100644 --- a/app/android/src/uk/co/lutraconsulting/InputActivity.java +++ b/app/android/src/uk/co/lutraconsulting/InputActivity.java @@ -83,6 +83,9 @@ void setCustomStatusAndNavBar() if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) { Log.d( TAG, "Unsupported Android version for painting behind system bars." ); return; + } + else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.VANILLA_ICE_CREAM) { + return; } else { WindowCompat.setDecorFitsSystemWindows(getWindow(), false); From 8b07fe2b34b859e0a4f61f8749fb15f76e65c20d Mon Sep 17 00:00:00 2001 From: Withalion Date: Wed, 30 Jul 2025 18:05:05 +0300 Subject: [PATCH 2/6] Actually keep in sync the build.gradle with Qt --- cmake_templates/build.gradle.in | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/cmake_templates/build.gradle.in b/cmake_templates/build.gradle.in index c83f1abab..c7c1c89c5 100644 --- a/cmake_templates/build.gradle.in +++ b/cmake_templates/build.gradle.in @@ -1,4 +1,4 @@ -/* keep in sync with /opt/Qt//android//src/android/templates/build.gradle */ +/* keep in sync with /opt/Qt//android/src/android/templates/build.gradle */ buildscript { ext { @@ -14,7 +14,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:7.4.1' + classpath 'com.android.tools.build:gradle:8.6.0' } } @@ -23,13 +23,13 @@ repositories { mavenCentral() } -apply plugin: 'com.android.application' +apply plugin: qtGradlePluginType dependencies { implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar']) implementation "androidx.appcompat:appcompat:1.4.1" - implementation "androidx.core:core:1.8.0" + implementation "androidx.core:core:1.13.1" implementation 'androidx.core:core-splashscreen:1.0.0-beta02' implementation "androidx.exifinterface:exifinterface:1.3.3" implementation 'com.android.support:appcompat-v7:28.0.0' @@ -50,6 +50,7 @@ android { * Changing them manually might break the compilation! *******************************************************/ + namespace androidPackageName compileSdkVersion androidCompileSdkVersion.toInteger() buildToolsVersion androidBuildToolsVersion ndkVersion androidNdkVersion From f2b0745f6a4f4acaad73300ed65cfcbb31750d80 Mon Sep 17 00:00:00 2001 From: Withalion Date: Wed, 30 Jul 2025 18:07:42 +0300 Subject: [PATCH 3/6] Fix deprecated android methods --- .../uk/co/lutraconsulting/InputActivity.java | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/app/android/src/uk/co/lutraconsulting/InputActivity.java b/app/android/src/uk/co/lutraconsulting/InputActivity.java index ccbeb7c0f..28bdd7a25 100644 --- a/app/android/src/uk/co/lutraconsulting/InputActivity.java +++ b/app/android/src/uk/co/lutraconsulting/InputActivity.java @@ -84,22 +84,22 @@ void setCustomStatusAndNavBar() Log.d( TAG, "Unsupported Android version for painting behind system bars." ); return; } - else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.VANILLA_ICE_CREAM) { - return; - } else { WindowCompat.setDecorFitsSystemWindows(getWindow(), false); Window window = getWindow(); - // draw app edge-to-edge - window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); - - // make the status bar background color transparent - window.setStatusBarColor(Color.TRANSPARENT); - - // make the navigation button background color transparent - window.setNavigationBarColor(Color.TRANSPARENT); + // on Android 15+ all apps are edge-to-edge + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.VANILLA_ICE_CREAM) { + // draw app edge-to-edge + window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); + + // make the status bar background color transparent + window.setStatusBarColor(Color.TRANSPARENT); + + // make the navigation button background color transparent + window.setNavigationBarColor(Color.TRANSPARENT); + } // do not show background dim for the navigation buttons window.setNavigationBarContrastEnforced(false); From 22b41e07a200e5c2d68164400a7c06e0572afb5b Mon Sep 17 00:00:00 2001 From: Withalion Date: Wed, 30 Jul 2025 18:12:55 +0300 Subject: [PATCH 4/6] Update android CI --- .github/workflows/android.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index e31268c0f..7cfd40304 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -24,11 +24,11 @@ jobs: runs-on: macos-15 env: QT_VERSION: '6.8.3' # use scripts/update_qt_version.bash to change - NDK_VERSION: 'r26' # '26.1.10909125' - NDK_VERSION_FULL: r26b + NDK_VERSION: 'r27' # '27.2.12479018' + NDK_VERSION_FULL: r27c JDK_VERSION: 17 - SDK_PLATFORM: android-34 - SDK_BUILD_TOOLS: 34.0.0 + SDK_PLATFORM: android-35 + SDK_BUILD_TOOLS: 35.0.0 INPUT_SDK_VERSION_ARM: arm-android-20250326-241 INPUT_SDK_VERSION_ARM64: arm64-android-20250326-241 CCACHE_DIR: /Users/runner/work/ccache From fad5ecd714035f6e84e81a1e164c180e29635525 Mon Sep 17 00:00:00 2001 From: Withalion Date: Wed, 30 Jul 2025 18:47:37 +0300 Subject: [PATCH 5/6] Update gradle deps --- cmake_templates/build.gradle.in | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/cmake_templates/build.gradle.in b/cmake_templates/build.gradle.in index c7c1c89c5..0c9e9fb5e 100644 --- a/cmake_templates/build.gradle.in +++ b/cmake_templates/build.gradle.in @@ -28,12 +28,11 @@ apply plugin: qtGradlePluginType dependencies { implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar']) - implementation "androidx.appcompat:appcompat:1.4.1" + implementation "androidx.appcompat:appcompat:1.7.1" implementation "androidx.core:core:1.13.1" - implementation 'androidx.core:core-splashscreen:1.0.0-beta02' - implementation "androidx.exifinterface:exifinterface:1.3.3" - implementation 'com.android.support:appcompat-v7:28.0.0' - implementation 'com.google.android.gms:play-services-location:21.2.0' + implementation "androidx.core:core-splashscreen:1.0.1" + implementation "androidx.exifinterface:exifinterface:1.4.1" + implementation "com.google.android.gms:play-services-location:21.3.0" } android { From d3457c9f57a6bf52eec92e693344e257ae64dd7d Mon Sep 17 00:00:00 2001 From: Withalion Date: Fri, 1 Aug 2025 14:37:19 +0300 Subject: [PATCH 6/6] Refactor android infra --- cmake_templates/AndroidManifest.xml.in | 34 ++++---------------------- cmake_templates/build.gradle.in | 11 ++------- 2 files changed, 7 insertions(+), 38 deletions(-) diff --git a/cmake_templates/AndroidManifest.xml.in b/cmake_templates/AndroidManifest.xml.in index 98db061c0..0aa6e15a4 100644 --- a/cmake_templates/AndroidManifest.xml.in +++ b/cmake_templates/AndroidManifest.xml.in @@ -1,6 +1,5 @@ @@ -34,28 +33,25 @@ android:largeScreens="true" android:normalScreens="true" android:smallScreens="true" /> - + android:roundIcon="@mipmap/ic_appicon_round" > - - + + @@ -79,26 +75,6 @@ - - - - - - - - - - @@ -108,7 +84,7 @@ android:parentActivityName="uk.co.lutraconsulting.InputActivity" android:configChanges="screenLayout|orientation|screenSize" > - + - + diff --git a/cmake_templates/build.gradle.in b/cmake_templates/build.gradle.in index 0c9e9fb5e..76aa2b38f 100644 --- a/cmake_templates/build.gradle.in +++ b/cmake_templates/build.gradle.in @@ -1,13 +1,6 @@ /* keep in sync with /opt/Qt//android/src/android/templates/build.gradle */ buildscript { - ext { - buildToolsVersion = androidBuildToolsVersion - compileSdkVersion = androidCompileSdkVersion.toInteger() - targetSdkVersion = androidCompileSdkVersion.toInteger() - ndkVersion = androidNdkVersion - } - repositories { google() mavenCentral() @@ -49,8 +42,8 @@ android { * Changing them manually might break the compilation! *******************************************************/ - namespace androidPackageName - compileSdkVersion androidCompileSdkVersion.toInteger() + namespace 'uk.co.lutraconsulting' + compileSdkVersion androidCompileSdkVersion buildToolsVersion androidBuildToolsVersion ndkVersion androidNdkVersion ndkPath '@INPUT_ANDROID_NDK_PATH@'