getsentry / sentry-android-gradle-plugin

Gradle plugin for Sentry Android. Upload proguard, debug files, and more.

Home Page:https://docs.sentry.io/platforms/android/gradle/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Execution failed for AsmClassesTransform

satyasivaprasad opened this issue · comments

Gradle Version

7.1.3

AGP Version

7.1.3

Code Minifier/Optimizer

Proguard

Version

7.9.0

Sentry SDK Version

4.6.0

Steps to Reproduce

Execution failed for AsmClassesTransform:

Expected Result

Execution failed for task ':app:mergeExtDexQa'.

Could not resolve all files for configuration ':app:qaRuntimeClasspath'.
Failed to transform vivalink-libs-core-1.4.aar (vigo.vivalink.libs:vivalink-libs-core:1.4) to match attributes {artifactType=android-dex, asm-transformed-variant=qa, dexing-enable-desugaring=true, dexing-is-debuggable=true, dexing-min-sdk=26, org.gradle.category=library, org.gradle.libraryelements=jar, org.gradle.status=release, org.gradle.usage=java-runtime}.
> Execution failed for AsmClassesTransform: /Users/siva/.gradle/caches/transforms-3/ae04c72823ca4937fa0d7b4659b6f560/transformed/jetified-vivalink-libs-core-1.4-runtime.jar.
> java.lang.ArrayIndexOutOfBoundsException (no error message)

  • Try:

Actual Result

Error should be solved

hi @satyasivaprasad, thanks for the report, we'll take a look and get back to you soon!

@romtsn Any update?

Hey @satyasivaprasad no updates as of now, we'll follow up on this issue once we managed to repro it or if we have questions.

@satyasivaprasad from the stacktrace we can see vigo.vivalink.libs:vivalink-libs-core:1.4, is this a private library which is obfuscated?

@satyasivaprasad most likely we won't be able to fix the issue without having access to the library, but you can work this around by excluding its classes from instrumentation as follows:

// in your app/build.gradle.kts
sentry {
  tracingInstrumentation {
  	excludes.set(setOf("vigo/vivalink/**"))
  }
}

@satyasivaprasad have you had a chance to take a look at our suggestions?

after adding

"sentry {
tracingInstrumentation {
excludes.set(setOf("vigo/vivalink/**"))
}
}"

facing the same issue

@satyasivaprasad from the stacktrace we can see vigo.vivalink.libs:vivalink-libs-core:1.4, is this a private library which is obfuscated?

yes

after adding

"sentry { tracingInstrumentation { excludes.set(setOf("vigo/vivalink/**")) } }"

facing the same issue

hmm, that should work, unless the library package name differs from vigo.vivalink.**. Can you check what's the package name of the classes coming from this lib?

@romtsn package name of the classes coming from the library is "com.vivalnk"

I have also tried below
tracingInstrumentation { excludes.set([ "vigo/vivalink/**", "com/vivalink/**" ]) }

but still not working

 tracingInstrumentation { excludes.set([ "vigo/vivalink/**", "com/vivalink/**" ]) }

I'm not sure it's a correct way to set it. Do you use .gradle or .gradle.kts?

.gradle

I am using ".gradle"

oh ok, then it should be:

tracingInstrumentation { 
  excludes = ['com/vivalink/**']
}

oh ok, then it should be:

tracingInstrumentation { 
  excludes = ['com/vivalink/**']
}

No luck , still facing issue

`Execution failed for task ':app:mergeExtDexQa'.

Could not resolve all files for configuration ':app:qaRuntimeClasspath'.
Failed to transform vivalink-libs-core-1.4.aar (vigo.vivalink.libs:vivalink-libs-core:1.4) to match attributes {artifactType=android-dex, asm-transformed-variant=qa, dexing-enable-desugaring=true, dexing-is-debuggable=true, dexing-min-sdk=26, org.gradle.category=library, org.gradle.libraryelements=jar, org.gradle.status=release, org.gradle.usage=java-runtime}.
> Execution failed for AsmClassesTransform: /Users/siva/.gradle/caches/transforms-3/ae04c72823ca4937fa0d7b4659b6f560/transformed/jetified-vivalink-libs-core-1.4-runtime.jar.
> java.lang.ArrayIndexOutOfBoundsException (no error message)
`

@satyasivaprasad alright, would you be able to share the library jar with us? I'm afraid without having access to it and being able to reproduce, we wouldn't be able to fix it. You can send it to me directly roman@sentry.io

hey @satyasivaprasad, I've finally had time to take a look into this, thanks for sending me over the library! Based on my observations, I think the following config should set you up:

tracingInstrumentation { 
  excludes = ['com/vivalink/**', 'com/ihealth/**']
}

please try it out and let us know if that helped. Thanks!