diff --git a/CHANGELOG.md b/CHANGELOG.md index 73e35d481..054ffd6d0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ ### Fixes +- Bundle ASM version within the plugin and bump it to `9.4` ([#637](https://github.com/getsentry/sentry-android-gradle-plugin/pull/637)) + - This should fix the `java.lang.AssertionError: Class with incorrect id found` exception when using `kotlinx.serialization` - Fall back to `findTask` if `assembleProvider` of AndroidVariant is null when hooking source bundle and native symbols upload tasks ([#639](https://github.com/getsentry/sentry-android-gradle-plugin/pull/639)) ### Dependencies diff --git a/buildSrc/src/main/java/Dependencies.kt b/buildSrc/src/main/java/Dependencies.kt index e44e944df..3cfeaa667 100644 --- a/buildSrc/src/main/java/Dependencies.kt +++ b/buildSrc/src/main/java/Dependencies.kt @@ -27,7 +27,7 @@ object LibsVersion { const val MIN_SDK_VERSION = 21 const val JUNIT = "4.13.2" - const val ASM = "7.0" // compatibility matrix -> https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/instrumentation/InstrumentationContext#apiversion + const val ASM = "9.4" // compatibility matrix -> https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/instrumentation/InstrumentationContext#apiversion const val SQLITE = "2.1.0" const val SENTRY = "6.31.0" } diff --git a/plugin-build/build.gradle.kts b/plugin-build/build.gradle.kts index 5a28da66e..5f9b50b5c 100644 --- a/plugin-build/build.gradle.kts +++ b/plugin-build/build.gradle.kts @@ -62,8 +62,8 @@ dependencies { compileOnly(agp74.output) compileOnly(Libs.PROGUARD) - compileOnly(Libs.ASM) - compileOnly(Libs.ASM_COMMONS) + implementation(Libs.ASM) + implementation(Libs.ASM_COMMONS) compileOnly("org.jetbrains.kotlin:kotlin-gradle-plugin:${KotlinCompilerVersion.VERSION}") diff --git a/plugin-build/src/test/kotlin/io/sentry/android/gradle/instrumentation/VisitorTest.kt b/plugin-build/src/test/kotlin/io/sentry/android/gradle/instrumentation/VisitorTest.kt index d208951c2..e78f1a338 100644 --- a/plugin-build/src/test/kotlin/io/sentry/android/gradle/instrumentation/VisitorTest.kt +++ b/plugin-build/src/test/kotlin/io/sentry/android/gradle/instrumentation/VisitorTest.kt @@ -60,7 +60,7 @@ class VisitorTest( val classContext = this.classContext ?: TestClassContext(instrumentable.fqName) val classVisitor = instrumentable.getVisitor( classContext, - Opcodes.ASM7, + Opcodes.ASM9, classWriter, parameters = TestSpanAddingParameters(inMemoryDir = tmpDir.root) ) @@ -72,7 +72,7 @@ class VisitorTest( // and pass it through CheckClassAdapter to verify that the bytecode is correct and can be accepted by JVM val bytes = classWriter.toByteArray() val verifyReader = ClassReader(bytes) - val checkAdapter = CheckClassAdapter(ClassWriter(0), true) + val checkAdapter = CheckClassAdapter(ClassWriter(ClassWriter.COMPUTE_FRAMES), true) // val methodNamePrintingVisitor = MethodNamePrintingVisitor(Opcodes.ASM7, checkAdapter) verifyReader.accept(checkAdapter, 0) diff --git a/plugin-build/src/test/kotlin/io/sentry/android/gradle/integration/BaseSentryNonAndroidPluginTest.kt b/plugin-build/src/test/kotlin/io/sentry/android/gradle/integration/BaseSentryNonAndroidPluginTest.kt index 64e1b9cac..5e783aa9f 100644 --- a/plugin-build/src/test/kotlin/io/sentry/android/gradle/integration/BaseSentryNonAndroidPluginTest.kt +++ b/plugin-build/src/test/kotlin/io/sentry/android/gradle/integration/BaseSentryNonAndroidPluginTest.kt @@ -1,6 +1,8 @@ package io.sentry.android.gradle.integration +import io.sentry.android.gradle.util.GradleVersions import io.sentry.android.gradle.util.PrintBuildOutputOnFailureRule +import io.sentry.android.gradle.util.SemVer import java.io.ByteArrayOutputStream import java.io.File import java.io.OutputStreamWriter @@ -96,6 +98,10 @@ abstract class BaseSentryNonAndroidPluginTest( print(providers.exec { commandLine 'find', project.gradle.gradleUserHomeDir, '-type', 'f', '-name', 'transforms-3.lock', '-delete' }.standardOutput.asText.get()) + } else { + tasks.register('unlockTransforms', Exec) { + commandLine 'find', project.gradle.gradleUserHomeDir, '-type', 'f', '-name', 'transforms-3.lock', '-delete' + } } """.trimIndent() } @@ -107,6 +113,11 @@ abstract class BaseSentryNonAndroidPluginTest( .withGradleVersion(gradleVersion) .forwardStdOutput(writer) .forwardStdError(writer) + + if (SemVer.parse(gradleVersion) < GradleVersions.VERSION_7_5) { + // for newer Gradle versions transforms are unlocked at config time instead of a task + runner.appendArguments("unlockTransforms").build() + } } @After diff --git a/plugin-build/src/test/kotlin/io/sentry/android/gradle/integration/BaseSentryPluginTest.kt b/plugin-build/src/test/kotlin/io/sentry/android/gradle/integration/BaseSentryPluginTest.kt index a4456a2c8..e635b202a 100644 --- a/plugin-build/src/test/kotlin/io/sentry/android/gradle/integration/BaseSentryPluginTest.kt +++ b/plugin-build/src/test/kotlin/io/sentry/android/gradle/integration/BaseSentryPluginTest.kt @@ -1,6 +1,9 @@ package io.sentry.android.gradle.integration +import io.sentry.android.gradle.integration.BaseSentryNonAndroidPluginTest.Companion.appendArguments +import io.sentry.android.gradle.util.GradleVersions import io.sentry.android.gradle.util.PrintBuildOutputOnFailureRule +import io.sentry.android.gradle.util.SemVer import java.io.ByteArrayOutputStream import java.io.File import java.io.OutputStreamWriter @@ -114,6 +117,10 @@ abstract class BaseSentryPluginTest( print(providers.exec { commandLine 'find', project.gradle.gradleUserHomeDir, '-type', 'f', '-name', 'transforms-3.lock', '-delete' }.standardOutput.asText.get()) + } else { + tasks.register('unlockTransforms', Exec) { + commandLine 'find', project.gradle.gradleUserHomeDir, '-type', 'f', '-name', 'transforms-3.lock', '-delete' + } } """.trimIndent() } @@ -126,6 +133,11 @@ abstract class BaseSentryPluginTest( // .withDebug(true) .forwardStdOutput(writer) .forwardStdError(writer) + + if (SemVer.parse(gradleVersion) < GradleVersions.VERSION_7_5) { + // for newer Gradle versions transforms are unlocked at config time instead of a task + runner.appendArguments("unlockTransforms").build() + } } @After diff --git a/plugin-build/src/test/kotlin/okhttp3/RealCall.kt b/plugin-build/src/test/kotlin/okhttp3/RealCall.kt new file mode 100644 index 000000000..90e0a4b87 --- /dev/null +++ b/plugin-build/src/test/kotlin/okhttp3/RealCall.kt @@ -0,0 +1,3 @@ +package okhttp3 + +class RealCall diff --git a/plugin-build/src/test/kotlin/okhttp3/Response.kt b/plugin-build/src/test/kotlin/okhttp3/Response.kt new file mode 100644 index 000000000..8e798a60c --- /dev/null +++ b/plugin-build/src/test/kotlin/okhttp3/Response.kt @@ -0,0 +1,3 @@ +package okhttp3 + +class Response diff --git a/plugin-build/src/test/kotlin/okhttp3/internal/connection/ConnectInterceptor.kt b/plugin-build/src/test/kotlin/okhttp3/internal/connection/ConnectInterceptor.kt new file mode 100644 index 000000000..27fc08dfa --- /dev/null +++ b/plugin-build/src/test/kotlin/okhttp3/internal/connection/ConnectInterceptor.kt @@ -0,0 +1,3 @@ +package okhttp3.internal.connection + +object ConnectInterceptor