From f5c4a0d1234ee86677b0337e8721a4d9ec83dd11 Mon Sep 17 00:00:00 2001 From: Bartosz Litwiniuk <> Date: Tue, 11 Aug 2026 21:38:01 +0200 Subject: [PATCH 01/10] Upgrade AGP to 9.3.1 and Gradle to 9.5 --- backtrace-library/build.gradle | 35 ++++++++++++--------- build.gradle | 2 +- example-app/build.gradle | 40 +++++++++++------------- gradle.properties | 3 +- gradle/wrapper/gradle-wrapper.properties | 2 +- settings.gradle | 4 +-- 6 files changed, 45 insertions(+), 41 deletions(-) diff --git a/backtrace-library/build.gradle b/backtrace-library/build.gradle index 64909c939..a8e1b4383 100644 --- a/backtrace-library/build.gradle +++ b/backtrace-library/build.gradle @@ -1,7 +1,7 @@ plugins { id 'com.android.library' id 'com.gladed.androidgitversion' version '0.4.14' - id "com.vanniktech.maven.publish" version "0.34.0" apply true + id "com.vanniktech.maven.publish" version "0.37.0" apply true } androidGitVersion { @@ -10,16 +10,16 @@ androidGitVersion { format '%tag%%-count%%-commit%%-branch%' } +def libVersion = androidGitVersion.name() + android { - namespace "backtraceio.library" + namespace = "backtraceio.library" + compileSdk = 36 defaultConfig { - minSdkVersion 21 - compileSdk 36 - targetSdkVersion 36 - ndkVersion '27.3.13750724' - versionName androidGitVersion.name() + minSdk = 21 + ndkVersion = '27.3.13750724' buildConfigField("String", "VERSION_NAME", "\"${versionName}\"") - testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner' + testInstrumentationRunner = 'androidx.test.runner.AndroidJUnitRunner' externalNativeBuild { cmake { @@ -39,13 +39,14 @@ android { } buildTypes { - debug { - testCoverageEnabled true - } release { - minifyEnabled false + minifyEnabled = false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } + debug { + enableUnitTestCoverage = true + enableAndroidTestCoverage = true + } } testCoverage { @@ -64,14 +65,18 @@ android { androidTest.manifest.srcFile "src/androidTest/java/backtraceio/library/AndroidManifest.xml" } lint { - abortOnError false + abortOnError = false + targetSdk = 36 + } + testOptions { + targetSdk = 36 } } mavenPublishing { - publishToMavenCentral() + publishToMavenCentralPortal() signAllPublications() - coordinates(GROUP, POM_NAME, android.defaultConfig.versionName) + coordinates(GROUP, POM_NAME, libVersion) pom { name = POM_NAME diff --git a/build.gradle b/build.gradle index 9aba94e74..ad9b24282 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:8.13.2' + classpath 'com.android.tools.build:gradle:9.3.1' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } diff --git a/example-app/build.gradle b/example-app/build.gradle index 1aeaf5901..ebbe508f8 100644 --- a/example-app/build.gradle +++ b/example-app/build.gradle @@ -1,22 +1,22 @@ apply plugin: 'com.android.application' android { - namespace "backtraceio.backtraceio" + namespace = "backtraceio.backtraceio" + compileSdk = 36 defaultConfig { - compileSdk 36 - applicationId "backtraceio.backtraceio" - minSdkVersion 21 - targetSdkVersion 36 - versionCode 1 - versionName "1.0" - testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner' + applicationId = "backtraceio.backtraceio" + minSdk = 21 + targetSdk = 36 + versionCode = 1 + versionName = "1.0" + testInstrumentationRunner = 'androidx.test.runner.AndroidJUnitRunner' ndk { abiFilters 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a' } } buildTypes { release { - minifyEnabled false + minifyEnabled = false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } @@ -29,18 +29,16 @@ android { } // Needed until we migrate to AndroidX - android { - lintOptions { - abortOnError false - } - defaultConfig { - buildConfigField ("String", "BACKTRACE_SUBMISSION_URL", getProperty("BACKTRACE_SUBMISSION_URL", "null")) - buildConfigField ("String", "BACKTRACE_CORONER_URL", getProperty("BACKTRACE_CORONER_URL", "null")) - buildConfigField ("String", "BACKTRACE_CORONER_TOKEN", getProperty("BACKTRACE_CORONER_TOKEN", "null")) - } - buildFeatures { - buildConfig = true - } + lint { + abortOnError = false + } + defaultConfig { + buildConfigField("String", "BACKTRACE_SUBMISSION_URL", getProperty("BACKTRACE_SUBMISSION_URL", "null")) + buildConfigField("String", "BACKTRACE_CORONER_URL", getProperty("BACKTRACE_CORONER_URL", "null")) + buildConfigField("String", "BACKTRACE_CORONER_TOKEN", getProperty("BACKTRACE_CORONER_TOKEN", "null")) + } + buildFeatures { + buildConfig = true } packagingOptions { jniLibs { diff --git a/gradle.properties b/gradle.properties index 289ed9dcd..510ccdf42 100644 --- a/gradle.properties +++ b/gradle.properties @@ -11,6 +11,7 @@ org.gradle.jvmargs=-Xmx4g # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects org.gradle.parallel=true +org.gradle.tooling.parallel=true GROUP=com.github.backtrace-labs.backtrace-android POM_NAME=backtrace-library @@ -31,4 +32,4 @@ POM_DEVELOPER_NAME3=Melek Ramki POM_DEVELOPER_ID4=KishanPRao POM_DEVELOPER_NAME4=Kishan Rao android.useAndroidX=true -android.enableJetifier=true +android.enableJetifier=true \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index d2602728d..e1781a02a 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Fri Jul 04 21:28:55 CEST 2025 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.0-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/settings.gradle b/settings.gradle index f35be79e6..f2db4a115 100644 --- a/settings.gradle +++ b/settings.gradle @@ -5,8 +5,8 @@ pluginManagement { mavenCentral() } plugins { - id 'com.android.application' version '8.13.2' apply false - id 'com.android.library' version '8.13.2' apply false + id 'com.android.application' version '9.3.1' apply false + id 'com.android.library' version '9.3.1' apply false } } include ':example-app', ':backtrace-library', ':coroner-client', ':gson' From 6ef26570f69298414dadb938e28ea58803aa1a86 Mon Sep 17 00:00:00 2001 From: Bartosz Litwiniuk <> Date: Tue, 11 Aug 2026 22:00:05 +0200 Subject: [PATCH 02/10] Revert update publishing plugin --- backtrace-library/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backtrace-library/build.gradle b/backtrace-library/build.gradle index a8e1b4383..b41c2ea16 100644 --- a/backtrace-library/build.gradle +++ b/backtrace-library/build.gradle @@ -1,7 +1,7 @@ plugins { id 'com.android.library' id 'com.gladed.androidgitversion' version '0.4.14' - id "com.vanniktech.maven.publish" version "0.37.0" apply true + id "com.vanniktech.maven.publish" version "0.34.0" apply true } androidGitVersion { @@ -74,7 +74,7 @@ android { } mavenPublishing { - publishToMavenCentralPortal() + publishToMavenCentral() signAllPublications() coordinates(GROUP, POM_NAME, libVersion) From aae5b60e4d8d7668b141f693032ede4ebfdabcc9 Mon Sep 17 00:00:00 2001 From: Bartosz Litwiniuk <> Date: Tue, 11 Aug 2026 22:50:08 +0200 Subject: [PATCH 03/10] Add empty line to gradle.properties --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 510ccdf42..8a8fa37e0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -32,4 +32,4 @@ POM_DEVELOPER_NAME3=Melek Ramki POM_DEVELOPER_ID4=KishanPRao POM_DEVELOPER_NAME4=Kishan Rao android.useAndroidX=true -android.enableJetifier=true \ No newline at end of file +android.enableJetifier=true From b5c75b2f9371d4c437a31545ded9128b5ac7a90b Mon Sep 17 00:00:00 2001 From: Bartosz Litwiniuk <> Date: Tue, 11 Aug 2026 22:54:34 +0200 Subject: [PATCH 04/10] Fix proguard default file --- backtrace-library/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backtrace-library/build.gradle b/backtrace-library/build.gradle index b41c2ea16..f113f839a 100644 --- a/backtrace-library/build.gradle +++ b/backtrace-library/build.gradle @@ -41,7 +41,7 @@ android { buildTypes { release { minifyEnabled = false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } debug { enableUnitTestCoverage = true From fc450ff852da0b8fd831f40e739e7eabbeff9935 Mon Sep 17 00:00:00 2001 From: Bartosz Litwiniuk <> Date: Wed, 12 Aug 2026 21:22:29 +0200 Subject: [PATCH 05/10] Replace shadow plugin --- gson/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gson/build.gradle b/gson/build.gradle index b70520fb6..1e99dc413 100644 --- a/gson/build.gradle +++ b/gson/build.gradle @@ -1,6 +1,6 @@ plugins { id 'java' - id 'com.github.johnrengelman.shadow' version '8.1.1' + id 'com.gradleup.shadow' version '9.6.1' } repositories { From 89874eb87d710f3b58237ff3bd8bcaee12bdaedd Mon Sep 17 00:00:00 2001 From: Bartosz Litwiniuk <> Date: Mon, 17 Aug 2026 08:07:52 +0200 Subject: [PATCH 06/10] Bump Java to JDK v21 in CI --- .github/workflows/test.yml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a85c862ab..9e1857cb1 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -59,10 +59,10 @@ jobs: submodules: recursive persist-credentials: false - - name: set up JDK 17 + - name: set up JDK 21 uses: actions/setup-java@cf277c60eb25467037889841efdb72551f06f6c3 # v5 with: - java-version: "17" + java-version: "21" distribution: "temurin" - name: Set up Gradle (caching) @@ -148,10 +148,10 @@ jobs: submodules: recursive persist-credentials: false - - name: set up JDK 17 + - name: set up JDK 21 uses: actions/setup-java@cf277c60eb25467037889841efdb72551f06f6c3 # v5 with: - java-version: "17" + java-version: "21" distribution: "temurin" - name: Set up Gradle (caching) @@ -202,10 +202,10 @@ jobs: submodules: recursive persist-credentials: false - - name: set up JDK 17 + - name: set up JDK 21 uses: actions/setup-java@cf277c60eb25467037889841efdb72551f06f6c3 # v5 with: - java-version: "17" + java-version: "21" distribution: "temurin" - name: Set up Gradle (caching) @@ -275,10 +275,10 @@ jobs: submodules: recursive persist-credentials: false - - name: set up JDK 17 + - name: set up JDK 21 uses: actions/setup-java@cf277c60eb25467037889841efdb72551f06f6c3 # v5 with: - java-version: "17" + java-version: "21" distribution: "temurin" - name: Set up Gradle (caching) @@ -413,10 +413,10 @@ jobs: submodules: recursive persist-credentials: false - - name: set up JDK 17 + - name: set up JDK 21 uses: actions/setup-java@cf277c60eb25467037889841efdb72551f06f6c3 # v5 with: - java-version: "17" + java-version: "21" distribution: "temurin" - name: Set up Gradle (caching) @@ -518,10 +518,10 @@ jobs: submodules: recursive persist-credentials: false - - name: set up JDK 17 + - name: set up JDK 21 uses: actions/setup-java@cf277c60eb25467037889841efdb72551f06f6c3 # v5 with: - java-version: "17" + java-version: "21" distribution: "temurin" - name: Set up Gradle (caching) From 195074f1819b474fba9ea6cbda545e51783258cf Mon Sep 17 00:00:00 2001 From: Bartosz Litwiniuk <> Date: Mon, 24 Aug 2026 21:34:36 +0200 Subject: [PATCH 07/10] chore: Update java to v21 in uploadArchives --- .github/workflows/uploadArchives.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/uploadArchives.yml b/.github/workflows/uploadArchives.yml index 9cd8fd217..339418e4f 100644 --- a/.github/workflows/uploadArchives.yml +++ b/.github/workflows/uploadArchives.yml @@ -25,11 +25,11 @@ jobs: token: ${{ secrets.ACCESS_TOKEN }} persist-credentials: false - - name: set up JDK 17 + - name: set up JDK 21 uses: actions/setup-java@v4 with: - java-version: 17.0.10 - distribution: "adopt" + java-version: 21 + distribution: "temurin" - name: Add Maven Central Repository credentials and keys to gradle.properties run: | From 446fcf5022127b79c22b3c317a4d99405952c1ec Mon Sep 17 00:00:00 2001 From: Bartosz Litwiniuk <> Date: Mon, 24 Aug 2026 21:47:26 +0200 Subject: [PATCH 08/10] Use libVersion in defaultConfig-> buildConfigField with var validation --- backtrace-library/build.gradle | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/backtrace-library/build.gradle b/backtrace-library/build.gradle index 1980dab12..b9263e139 100644 --- a/backtrace-library/build.gradle +++ b/backtrace-library/build.gradle @@ -12,13 +12,18 @@ androidGitVersion { def libVersion = androidGitVersion.name() +if (libVersion == null || libVersion.trim().isEmpty() || libVersion.trim() == 'null') { + throw new GradleException("androidGitVersion.name() resolved to '${libVersion}'. " + + "The library version could not be determined. Make sure the git history and tags are available.") +} + android { namespace = "backtraceio.library" compileSdk = 36 defaultConfig { minSdk = 21 ndkVersion = '27.3.13750724' - buildConfigField("String", "VERSION_NAME", "\"${versionName}\"") + buildConfigField("String", "VERSION_NAME", "\"${libVersion}\"") testInstrumentationRunner = 'androidx.test.runner.AndroidJUnitRunner' externalNativeBuild { From 34abc2769b746b6aca9a68adcf7167a9f2c666d9 Mon Sep 17 00:00:00 2001 From: Bartosz Litwiniuk <> Date: Wed, 26 Aug 2026 16:37:37 +0200 Subject: [PATCH 09/10] Disable kotlin --- backtrace-library/build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/backtrace-library/build.gradle b/backtrace-library/build.gradle index b9263e139..0fcda8ec5 100644 --- a/backtrace-library/build.gradle +++ b/backtrace-library/build.gradle @@ -19,6 +19,7 @@ if (libVersion == null || libVersion.trim().isEmpty() || libVersion.trim() == 'n android { namespace = "backtraceio.library" + enableKotlin = false compileSdk = 36 defaultConfig { minSdk = 21 From ad08a318861a2b1d8836fe30201cbc495ee8a84c Mon Sep 17 00:00:00 2001 From: Bartosz Litwiniuk <> Date: Fri, 28 Aug 2026 07:47:26 +0200 Subject: [PATCH 10/10] chore: Bump gradle to 9.3.2 --- build.gradle | 2 +- settings.gradle | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index ad9b24282..a59590546 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:9.3.1' + classpath 'com.android.tools.build:gradle:9.3.2' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } diff --git a/settings.gradle b/settings.gradle index f2db4a115..196a4510a 100644 --- a/settings.gradle +++ b/settings.gradle @@ -5,8 +5,8 @@ pluginManagement { mavenCentral() } plugins { - id 'com.android.application' version '9.3.1' apply false - id 'com.android.library' version '9.3.1' apply false + id 'com.android.application' version '9.3.2' apply false + id 'com.android.library' version '9.3.2' apply false } } include ':example-app', ':backtrace-library', ':coroner-client', ':gson'