From ce3a98a3145b0521480e34a0ed7e6253e1001a5e Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Mon, 15 Sep 2025 10:02:01 -0300 Subject: [PATCH 1/5] Bump minSdk to 24 due to a serialization bug We are relying heavily on the kotlinx.serialization library. Many dependencies also use it indirectly, so forcing an older version is no longer feasible. Newer versions use CharsetDecoderICU which had a bug in Android <= 23. The team decided that instead of workarounds, we just bump minSdk to 24 and require at least Android 7 for new releases. See https://github.com/Kotlin/kotlinx.serialization/issues/2231 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index ce0c81467..233d2d79e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -37,7 +37,7 @@ android { applicationId "org.fdroid" testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner' - minSdkVersion 23 + minSdkVersion 24 targetSdkVersion 31 /* The Android Testing Support Library collects analytics to continuously improve the testing From bdb4649a8e2cb8358d4c1d39cfb9c48f106fbcea Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Mon, 15 Sep 2025 11:10:23 -0300 Subject: [PATCH 2/5] Run CI on SDK 24 as this is new minimum --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0deda6295..7da3e9f35 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -338,7 +338,7 @@ kvm jobs skipped: - printf "\x1b[32m${CI_SERVER_URL}/$CI_PROJECT_PATH/-/settings/ci_cd#js-cicd-variables-settings\n" -kvm 23 default x86: +kvm 24 default x86: <<: *kvm-template From 90c28b6bcecc4ec2d43f1b77ede30d5bd00cc652 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Mon, 15 Sep 2025 11:30:11 -0300 Subject: [PATCH 3/5] Adapt tests for minSdk 24 --- .../java/kellinwood/security/zipsigner/ZipSignerTest.java | 7 +------ .../org/fdroid/fdroid/nearby/LocalRepoKeyStoreTest.java | 2 +- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/app/src/testFull/java/kellinwood/security/zipsigner/ZipSignerTest.java b/app/src/testFull/java/kellinwood/security/zipsigner/ZipSignerTest.java index ba7492e84..7e8038774 100644 --- a/app/src/testFull/java/kellinwood/security/zipsigner/ZipSignerTest.java +++ b/app/src/testFull/java/kellinwood/security/zipsigner/ZipSignerTest.java @@ -34,12 +34,10 @@ import java.util.jar.JarOutputStream; * This test the JAR signing functions of {@link ZipSigner}. */ @RunWith(RobolectricTestRunner.class) -@Config(sdk = {23, 25, 32}) // minSdkVersion, targetSdkVersion, max SDK supported by Robolectric +@Config(sdk = {24, 25, 32, 35}) // minSdkVersion, targetSdkVersion, max SDK supported by Robolectric public class ZipSignerTest { - public static final String TAG = "ZipSignerTest"; private File unsigned; - private File signed; @Before public void setUp() { @@ -64,9 +62,6 @@ public class ZipSignerTest { if (unsigned != null) { unsigned.delete(); } - if (signed != null) { - signed.delete(); - } } @Test diff --git a/app/src/testFull/java/org/fdroid/fdroid/nearby/LocalRepoKeyStoreTest.java b/app/src/testFull/java/org/fdroid/fdroid/nearby/LocalRepoKeyStoreTest.java index 2745a9790..d0375fad2 100644 --- a/app/src/testFull/java/org/fdroid/fdroid/nearby/LocalRepoKeyStoreTest.java +++ b/app/src/testFull/java/org/fdroid/fdroid/nearby/LocalRepoKeyStoreTest.java @@ -31,7 +31,7 @@ import java.util.jar.JarFile; import java.util.jar.JarOutputStream; @RunWith(RobolectricTestRunner.class) -@Config(sdk = {23, 25, 32}) // minSdkVersion, targetSdkVersion, max SDK supported by Robolectric +@Config(sdk = {24, 25, 32, 35}) // minSdkVersion, targetSdkVersion, max SDK supported by Robolectric public class LocalRepoKeyStoreTest { @Test From b5368e577b449b7889f44771df95af91c77b0e3e Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Mon, 15 Sep 2025 13:38:36 -0300 Subject: [PATCH 4/5] Fix emulator cores issue (again) --- .gitlab-ci.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7da3e9f35..c745bc31c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -300,7 +300,9 @@ libs database schema: - export AVD="$AVD_PACKAGE" - echo y | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --install "$AVD" - echo no | $ANDROID_HOME/cmdline-tools/latest/bin/avdmanager --verbose create avd --name "$NAME_AVD" --package "$AVD" --device "pixel" - - sed -i "s@hw.cpu.ncore=3@hw.cpu.ncore=$(nproc --all)@" $HOME/.android/avd/"$NAME_AVD".avd/config.ini + - sed -i "s@hw.cpu.ncore.*@hw.cpu.ncore=$(getconf _NPROCESSORS_ONLN)@" $HOME/.android/avd/"$NAME_AVD".avd/config.ini + - getconf _NPROCESSORS_ONLN + - grep core $HOME/.android/avd/"$NAME_AVD".avd/config.ini - df -h - start-emulator.sh - ./gradlew installFullDebug From 7d655487ff29ad44134766a4572c30a4daa9e36b Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Tue, 16 Sep 2025 11:03:34 -0300 Subject: [PATCH 5/5] Remove emulator CPU core setting as it doesn't help --- .gitlab-ci.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c745bc31c..8ac39438e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -300,9 +300,6 @@ libs database schema: - export AVD="$AVD_PACKAGE" - echo y | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --install "$AVD" - echo no | $ANDROID_HOME/cmdline-tools/latest/bin/avdmanager --verbose create avd --name "$NAME_AVD" --package "$AVD" --device "pixel" - - sed -i "s@hw.cpu.ncore.*@hw.cpu.ncore=$(getconf _NPROCESSORS_ONLN)@" $HOME/.android/avd/"$NAME_AVD".avd/config.ini - - getconf _NPROCESSORS_ONLN - - grep core $HOME/.android/avd/"$NAME_AVD".avd/config.ini - df -h - start-emulator.sh - ./gradlew installFullDebug