From 6c2b8f9f5682efc23b262fee05923bfc749c2953 Mon Sep 17 00:00:00 2001 From: Adam Brown Date: Sat, 12 Sep 2026 06:59:17 +0200 Subject: [PATCH] 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 | 49 +++++++++++++++++++ sentry-android-navigation3/proguard-rules.pro | 7 +++ settings.gradle.kts | 1 + 4 files changed, 58 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 09d2869988b..7420f5fbeb5 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..e16f145c3df --- /dev/null +++ b/sentry-android-navigation3/build.gradle.kts @@ -0,0 +1,49 @@ +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.gradle.versions) + alias(libs.plugins.detekt) +} + +android { + compileSdk = libs.versions.compileSdk.get().toInt() + namespace = "io.sentry.compose.navigation3" + + defaultConfig { + minSdk = 23 // Nav3 requires minSdk 23 + } + + 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 665e85477df..d77f01ac01d 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",