From 1b98b503650884f0f1a14f7bb4767de187ed952e Mon Sep 17 00:00:00 2001 From: Adam Brown Date: Sat, 12 Sep 2026 06:59:17 +0200 Subject: [PATCH 1/2] feat(android-nav3): Create the navigation3 module Establish the new Android Navigation 3 integration module and register it with the build and publication metadata. This keeps the first step focused on the module boundary itself, without introducing generated API surface or implementation code yet. Co-Authored-By: OpenCode --- buildSrc/src/main/java/Config.kt | 1 + sentry-android-navigation3/build.gradle.kts | 50 +++++++++++++++++++ sentry-android-navigation3/proguard-rules.pro | 7 +++ settings.gradle.kts | 1 + 4 files changed, 59 insertions(+) create mode 100644 sentry-android-navigation3/build.gradle.kts create mode 100644 sentry-android-navigation3/proguard-rules.pro diff --git a/buildSrc/src/main/java/Config.kt b/buildSrc/src/main/java/Config.kt index 52d7684620d..fbc210b6584 100644 --- a/buildSrc/src/main/java/Config.kt +++ b/buildSrc/src/main/java/Config.kt @@ -98,6 +98,7 @@ object Config { "sentry-android-ndk", "sentry-android-fragment", "sentry-android-navigation", + "sentry-android-navigation3", "sentry-android-timber", "sentry-compose-android", "sentry-android-sqlite", diff --git a/sentry-android-navigation3/build.gradle.kts b/sentry-android-navigation3/build.gradle.kts new file mode 100644 index 00000000000..de1fd2448e4 --- /dev/null +++ b/sentry-android-navigation3/build.gradle.kts @@ -0,0 +1,50 @@ +import io.gitlab.arturbosch.detekt.Detekt +import org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8 +import org.jetbrains.kotlin.gradle.dsl.KotlinVersion + +plugins { + id("com.android.library") + alias(libs.plugins.kotlin.android) + alias(libs.plugins.kotlin.compose) + alias(libs.plugins.gradle.versions) + alias(libs.plugins.detekt) +} + +android { + compileSdk = libs.versions.compileSdk.get().toInt() + namespace = "io.sentry.compose.navigation3" + + defaultConfig { + minSdk = libs.versions.minSdk.get().toInt() + } + + buildTypes { + getByName("debug") { consumerProguardFiles("proguard-rules.pro") } + getByName("release") { consumerProguardFiles("proguard-rules.pro") } + } + + kotlin { + compilerOptions.jvmTarget = JVM_1_8 + compilerOptions.languageVersion = KotlinVersion.KOTLIN_1_9 + compilerOptions.apiVersion = KotlinVersion.KOTLIN_1_9 + } + + lint { + warningsAsErrors = true + checkDependencies = true + + // We run a full lint analysis as build part in CI, so skip vital checks for assemble tasks. + checkReleaseBuilds = false + } + + androidComponents.beforeVariants { + it.enable = !Config.Android.shouldSkipDebugVariant(it.buildType) + } +} + +kotlin { explicitApi() } + +tasks.withType().configureEach { + // Target version of the generated JVM bytecode. It is used for type resolution. + jvmTarget = JavaVersion.VERSION_1_8.toString() +} diff --git a/sentry-android-navigation3/proguard-rules.pro b/sentry-android-navigation3/proguard-rules.pro new file mode 100644 index 00000000000..244282115a5 --- /dev/null +++ b/sentry-android-navigation3/proguard-rules.pro @@ -0,0 +1,7 @@ +##---------------Begin: proguard configuration for Compose ---------- + +# To ensure that stack traces is unambiguous +# https://developer.android.com/studio/build/shrink-code#decode-stack-trace +-keepattributes LineNumberTable,SourceFile + +##---------------End: proguard configuration for Compose ---------- diff --git a/settings.gradle.kts b/settings.gradle.kts index 334ddadf89a..e243795499d 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -51,6 +51,7 @@ include( "sentry-android-timber", "sentry-android-fragment", "sentry-android-navigation", + "sentry-android-navigation3", "sentry-android-sqlite", "sentry-android-replay", "sentry-compose", From 3a8600752e4b7a614d89931b938c827c877cac77 Mon Sep 17 00:00:00 2001 From: Adam Brown Date: Fri, 18 Sep 2026 14:31:24 +0200 Subject: [PATCH 2/2] build(android-nav3): Set release test build type AGP 9 only generates unit tests for the configured test build type. Because this module disables the debug variant, point unit tests at release so future tests run instead of being skipped. --- sentry-android-navigation3/build.gradle.kts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sentry-android-navigation3/build.gradle.kts b/sentry-android-navigation3/build.gradle.kts index de1fd2448e4..1ee3c96d354 100644 --- a/sentry-android-navigation3/build.gradle.kts +++ b/sentry-android-navigation3/build.gradle.kts @@ -23,6 +23,10 @@ android { getByName("release") { consumerProguardFiles("proguard-rules.pro") } } + // AGP 9 only generates unit tests for the testBuildType. The debug variant is + // disabled, so unit tests must target release to run at all. + testBuildType = "release" + kotlin { compilerOptions.jvmTarget = JVM_1_8 compilerOptions.languageVersion = KotlinVersion.KOTLIN_1_9