Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .cursor/BUGBOT.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ rule file in [`.cursor/rules/`](rules) for the area the diff touches (`api`, `op

## Java and Android specifics

- The core `sentry` module is Java 8 and must not reference Android or JVM-only APIs. Reach optional
- The core `sentry` module is Java 11 and must not reference Android or JVM-only APIs. Reach optional
platform code through `Platform`, `LoadClass`, or a separate module.
- Android code calling an API newer than `minSdk` must be guarded by
`BuildInfoProvider.getSdkInfoVersion()`.
Expand Down
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ The repository is organized into multiple modules:
## Development Guidelines

### Code Style
- **Languages**: Java 8+ and Kotlin
- **Languages**: Java 11+ and Kotlin
- **Formatting**: Enforced via Spotless
- **API Compatibility**: Binary compatibility is enforced. `.api` files are generated, never hand-edited

Expand Down
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

### Breaking Changes

- The SDK is now compiled for Java 11 instead of Java 8. JVM applications need Java 11 or newer ([#6459](https://github.com/getsentry/sentry-java/pull/6459))
- Default trace context status to `ok` when an active span has no explicit status ([#6418](https://github.com/getsentry/sentry-java/pull/6418))
- Remove the deprecated user feedback APIs ([#6337](https://github.com/getsentry/sentry-java/pull/6337))
- `UserFeedback` and `Sentry.captureUserFeedback(...)`: use `Sentry.feedback().capture(...)` with `io.sentry.protocol.Feedback` instead
Expand Down
4 changes: 0 additions & 4 deletions build-logic/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,6 @@ gradlePlugin {
id = "io.sentry.jdk-target"
implementationClass = "io.sentry.gradle.JdkTargetConvention"
}
register("sentryAnimalSniffer") {
id = "io.sentry.animalsniffer"
implementationClass = "io.sentry.gradle.SentryAnimalSnifferPlugin"
}
register("sentryAnimalSnifferAndroid") {
id = "io.sentry.animalsniffer.android"
implementationClass = "io.sentry.gradle.SentryAnimalSnifferAndroidPlugin"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,18 +20,18 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile
/** The JDK every module compiles and tests with, whatever JDK runs Gradle. */
private val BUILD_JDK = JavaLanguageVersion.of(21)

/** The level the SDK publishes, so that Java 8 consumers can still use it. */
private val PUBLISHED_JAVA_VERSION = JavaVersion.VERSION_1_8
/** The level the SDK publishes. */
private val PUBLISHED_JAVA_VERSION = JavaVersion.VERSION_11

/**
* Holds every toolchain, bytecode level decision and compilation option of a module. It does the
* following
* - sample apps target the build JDK (21)
* - unit test code will target the build JDK (21) (required for Mockito 5)
* - published JVM modules main code pins the Java 1.8 release, for Java and for Kotlin
* - published JVM modules main code pins the Java 11 release, for Java and for Kotlin
* - published modules Java code drops the MethodParameters attribute javac 21 adds, and their
* archives are checked for it
* - published Android modules main code targets Java 1.8
* - published Android modules main code targets Java 11
* - minSdk is set for Android libraries
*/
class JdkTargetConvention : Plugin<Project> {
Expand Down Expand Up @@ -75,7 +75,7 @@ class JdkTargetConvention : Plugin<Project> {
}
}
// -Xjdk-release is the Kotlin counterpart of release: without it Kotlin resolves against the
// build JDK and happily compiles e.g. Files.readString() into Java 8 bytecode. The version
// build JDK and happily compiles e.g. Stream.toList() into Java 11 bytecode. The version
// follows jvmTarget, which the modules that publish a higher level set themselves.
project.plugins.withId("org.jetbrains.kotlin.jvm") {
project.tasks.named("compileKotlin", KotlinJvmCompile::class.java) {
Expand Down Expand Up @@ -110,8 +110,8 @@ class JdkTargetConvention : Plugin<Project> {
.toInt()

/**
* Mockito 5 and mockito-kotlin 6 are built for Java 11, so test code - which is never published -
* cannot share the Java 8 target of the main code. AGP has no per variant compileOptions, so this
* Test code - which is never published - targets the build JDK, as it does in the JVM modules,
* instead of the Java 11 target of the main code. AGP has no per variant compileOptions, so this
* goes through the Kotlin compilations: their compile task providers are configured after AGP
* wrote its own compileOptions, which an apply time configureEach would lose against.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,19 @@ abstract class SentryAnimalSnifferExtension {
}
}

class SentryAnimalSnifferPlugin : Plugin<Project> {
/**
* Checks the main code of the JVM modules that Android apps also use against the Android API 21
* signature. The JVM API needs no signature: javac's release flag and Kotlin's -Xjdk-release
* already limit main code to the published Java version, see JdkTargetConvention.
*/
class SentryAnimalSnifferAndroidPlugin : Plugin<Project> {
override fun apply(project: Project) {
project.pluginManager.apply("ru.vyarus.animalsniffer")

val extension =
project.extensions.create("sentryAnimalSniffer", SentryAnimalSnifferExtension::class.java)

project.addSignatureDependency("java8-signature")
project.addSignatureDependency("gummy-bears-api21")

project.tasks.named("animalsnifferMain", AnimalSniffer::class.java).configure {
ignoreClasses = ignoreClasses + extension.ignoredClasses.get()
Expand All @@ -38,14 +43,6 @@ class SentryAnimalSnifferPlugin : Plugin<Project> {
}
}

class SentryAnimalSnifferAndroidPlugin : Plugin<Project> {
override fun apply(project: Project) {
project.pluginManager.apply(SentryAnimalSnifferPlugin::class.java)

project.addSignatureDependency("gummy-bears-api21")
}
}

private fun Project.addSignatureDependency(libraryName: String) {
val libs = extensions.getByType(VersionCatalogsExtension::class.java).named("libs")
dependencies.add("signature", signatureNotation(libs.findLibrary(libraryName).get().get()))
Expand Down
2 changes: 0 additions & 2 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ coroutines = "1.6.1"
espresso = "3.7.0"
feign = "11.6"
gummyBears = "0.12.0"
java8Signature = "1.0"
jackson = "2.18.3"
jetbrainsCompose = "1.6.11"
kotlin = "2.3.21"
Expand Down Expand Up @@ -252,7 +251,6 @@ timber = { module = "com.jakewharton.timber:timber", version = "4.7.1" }

# Animalsniffer signature
gummy-bears-api21 = { module = "com.toasttab.android:gummy-bears-api-21", version.ref = "gummyBears" }
java8-signature = { module = "org.codehaus.mojo.signature:java18", version.ref = "java8Signature" }

# tomcat libraries
tomcat-catalina = { module = "org.apache.tomcat:tomcat-catalina", version = "9.0.108" }
Expand Down
4 changes: 2 additions & 2 deletions sentry-android-core/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import net.ltgt.gradle.errorprone.errorprone
import org.jetbrains.kotlin.config.KotlinCompilerVersion
import org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8
import org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_11

plugins {
id("com.android.library")
Expand Down Expand Up @@ -39,7 +39,7 @@ android {
// disabled, so unit tests must target release to run at all.
testBuildType = "release"

kotlin { compilerOptions.jvmTarget = JVM_1_8 }
kotlin { compilerOptions.jvmTarget = JVM_11 }

testOptions {
animationsDisabled = true
Expand Down
4 changes: 2 additions & 2 deletions sentry-android-distribution/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8
import org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_11
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion

plugins {
Expand Down Expand Up @@ -28,7 +28,7 @@ android {
}

kotlin {
compilerOptions.jvmTarget = JVM_1_8
compilerOptions.jvmTarget = JVM_11
compilerOptions.languageVersion = KotlinVersion.KOTLIN_1_9
explicitApi()
}
Expand Down
4 changes: 2 additions & 2 deletions sentry-android-fragment/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ android {
testBuildType = "release"

kotlin {
compilerOptions.jvmTarget = JvmTarget.JVM_1_8
compilerOptions.jvmTarget = JvmTarget.JVM_11
compilerOptions.languageVersion = KotlinVersion.KOTLIN_1_9
compilerOptions.apiVersion = KotlinVersion.KOTLIN_1_9
}
Expand Down Expand Up @@ -75,5 +75,5 @@ dependencies {

tasks.withType<Detekt>().configureEach {
// Target version of the generated JVM bytecode. It is used for type resolution.
jvmTarget = JavaVersion.VERSION_1_8.toString()
jvmTarget = JavaVersion.VERSION_11.toString()
}
6 changes: 3 additions & 3 deletions sentry-android-navigation/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import io.gitlab.arturbosch.detekt.Detekt
import org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8
import org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_11
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion

plugins {
Expand Down Expand Up @@ -31,7 +31,7 @@ android {
testBuildType = "release"

kotlin {
compilerOptions.jvmTarget = JVM_1_8
compilerOptions.jvmTarget = JVM_11
compilerOptions.languageVersion = KotlinVersion.KOTLIN_1_9
compilerOptions.apiVersion = KotlinVersion.KOTLIN_1_9
}
Expand Down Expand Up @@ -82,5 +82,5 @@ dependencies {

tasks.withType<Detekt>().configureEach {
// Target version of the generated JVM bytecode. It is used for type resolution.
jvmTarget = JavaVersion.VERSION_1_8.toString()
jvmTarget = JavaVersion.VERSION_11.toString()
}
6 changes: 3 additions & 3 deletions sentry-android-navigation3/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import io.gitlab.arturbosch.detekt.Detekt
import org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8
import org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_11
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion

plugins {
Expand Down Expand Up @@ -29,7 +29,7 @@ android {
testBuildType = "release"

kotlin {
compilerOptions.jvmTarget = JVM_1_8
compilerOptions.jvmTarget = JVM_11
compilerOptions.languageVersion = KotlinVersion.KOTLIN_1_9
compilerOptions.apiVersion = KotlinVersion.KOTLIN_1_9
}
Expand Down Expand Up @@ -77,5 +77,5 @@ dependencies {

tasks.withType<Detekt>().configureEach {
// Target version of the generated JVM bytecode. It is used for type resolution.
jvmTarget = JavaVersion.VERSION_1_8.toString()
jvmTarget = JavaVersion.VERSION_11.toString()
}
2 changes: 1 addition & 1 deletion sentry-android-ndk/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ android {
// disabled, so unit tests must target release to run at all.
testBuildType = "release"

kotlin { compilerOptions.jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8 }
kotlin { compilerOptions.jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_11 }

testOptions {
animationsDisabled = true
Expand Down
4 changes: 2 additions & 2 deletions sentry-android-replay/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ android {
testBuildType = "release"

kotlin {
compilerOptions.jvmTarget = JvmTarget.JVM_1_8
compilerOptions.jvmTarget = JvmTarget.JVM_11
compilerOptions.languageVersion = KotlinVersion.KOTLIN_1_9
compilerOptions.apiVersion = KotlinVersion.KOTLIN_1_9
}
Expand Down Expand Up @@ -95,7 +95,7 @@ dependencies {

tasks.withType<Detekt>().configureEach {
// Target version of the generated JVM bytecode. It is used for type resolution.
jvmTarget = JavaVersion.VERSION_1_8.toString()
jvmTarget = JavaVersion.VERSION_11.toString()
}

tasks.withType<KotlinCompilationTask<*>>().configureEach {
Expand Down
4 changes: 2 additions & 2 deletions sentry-android-sqlite/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ android {
testBuildType = "release"

kotlin {
compilerOptions.jvmTarget = JvmTarget.JVM_1_8
compilerOptions.jvmTarget = JvmTarget.JVM_11
compilerOptions.languageVersion = KotlinVersion.KOTLIN_1_9
compilerOptions.apiVersion = KotlinVersion.KOTLIN_1_9
}
Expand Down Expand Up @@ -84,5 +84,5 @@ dependencies {

tasks.withType<Detekt>().configureEach {
// Target version of the generated JVM bytecode. It is used for type resolution.
jvmTarget = JavaVersion.VERSION_1_8.toString()
jvmTarget = JavaVersion.VERSION_11.toString()
}
4 changes: 2 additions & 2 deletions sentry-android-timber/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ android {
testBuildType = "release"

kotlin {
compilerOptions.jvmTarget = JvmTarget.JVM_1_8
compilerOptions.jvmTarget = JvmTarget.JVM_11
compilerOptions.languageVersion = KotlinVersion.KOTLIN_1_9
compilerOptions.apiVersion = KotlinVersion.KOTLIN_1_9
}
Expand Down Expand Up @@ -85,5 +85,5 @@ dependencies {

tasks.withType<Detekt>().configureEach {
// Target version of the generated JVM bytecode. It is used for type resolution.
jvmTarget = JavaVersion.VERSION_1_8.toString()
jvmTarget = JavaVersion.VERSION_11.toString()
}
2 changes: 1 addition & 1 deletion sentry-apollo-3/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ plugins {
}

tasks.named<KotlinCompile>("compileKotlin") {
compilerOptions.jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8
compilerOptions.jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_11
compilerOptions.languageVersion = org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_1_9
compilerOptions.apiVersion = org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_1_9
}
Expand Down
2 changes: 1 addition & 1 deletion sentry-apollo-4/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ plugins {
}

tasks.named<KotlinCompile>("compileKotlin") {
compilerOptions.jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8
compilerOptions.jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_11
compilerOptions.languageVersion = org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_1_9
compilerOptions.apiVersion = org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_1_9
}
Expand Down
2 changes: 1 addition & 1 deletion sentry-apollo-5/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ plugins {
}

tasks.named<KotlinCompile>("compileKotlin") {
compilerOptions.jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8
compilerOptions.jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_11
compilerOptions.languageVersion = org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_1_9
compilerOptions.apiVersion = org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_1_9
}
Expand Down
2 changes: 1 addition & 1 deletion sentry-apollo/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ plugins {
}

tasks.named<KotlinCompile>("compileKotlin") {
compilerOptions.jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8
compilerOptions.jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_11
compilerOptions.languageVersion = org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_1_9
compilerOptions.apiVersion = org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_1_9
}
Expand Down
3 changes: 1 addition & 2 deletions sentry-async-profiler/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,10 @@ plugins {
alias(libs.plugins.errorprone)
alias(libs.plugins.gradle.versions)
alias(libs.plugins.buildconfig)
id("io.sentry.animalsniffer")
}

tasks.named<KotlinCompile>("compileKotlin") {
compilerOptions.jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8
compilerOptions.jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_11
}

kotlin { explicitApi() }
Expand Down
6 changes: 3 additions & 3 deletions sentry-compose/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,15 @@ kotlin {

androidTarget {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_1_8)
jvmTarget.set(JvmTarget.JVM_11)
apiVersion.set(KotlinVersion.KOTLIN_1_9)
languageVersion.set(KotlinVersion.KOTLIN_1_9)
}
publishLibraryVariants("release")
}
jvm("desktop") {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_1_8)
jvmTarget.set(JvmTarget.JVM_11)
apiVersion.set(KotlinVersion.KOTLIN_1_9)
languageVersion.set(KotlinVersion.KOTLIN_1_9)
}
Expand Down Expand Up @@ -126,7 +126,7 @@ detekt { source.setFrom("src/androidMain/kotlin", "src/androidUnitTest/kotlin")

tasks.withType<Detekt>().configureEach {
// Target version of the generated JVM bytecode. It is used for type resolution.
jvmTarget = JavaVersion.VERSION_1_8.toString()
jvmTarget = JavaVersion.VERSION_11.toString()
}

tasks.withType<DokkaTask>().configureEach {
Expand Down
3 changes: 1 addition & 2 deletions sentry-graphql-22/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,10 @@ plugins {
alias(libs.plugins.errorprone)
alias(libs.plugins.gradle.versions)
alias(libs.plugins.buildconfig)
id("io.sentry.animalsniffer")
}

tasks.named<KotlinCompile>("compileKotlin") {
compilerOptions.jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8
compilerOptions.jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_11
compilerOptions.languageVersion = org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_1_9
compilerOptions.apiVersion = org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_1_9
}
Expand Down
3 changes: 1 addition & 2 deletions sentry-graphql-core/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,10 @@ plugins {
alias(libs.plugins.errorprone)
alias(libs.plugins.gradle.versions)
alias(libs.plugins.buildconfig)
id("io.sentry.animalsniffer")
}

tasks.named<KotlinCompile>("compileKotlin") {
compilerOptions.jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8
compilerOptions.jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_11
compilerOptions.languageVersion = org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_1_9
compilerOptions.apiVersion = org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_1_9
}
Expand Down
Loading
Loading