newrelic / newrelic-android-agent

SDK to enable instrumentation of Android mobile apps in New Relic
Apache License 2.0
13 stars 12 forks source link

New Relic Android agent 7.2.0 and Android Gradle plugin 8.+ doesn't work for mobile monitoring #160

Closed CarlitosDroid closed 1 week ago

CarlitosDroid commented 8 months ago

Description

Hi Team, I've created a new android app and trying to implement newrelic for monitoring my app. However after setting up the app I get an error:

2023-12-19 23:29:02.773 16865-16865 newrelic                com.example.agent7                   I  isInstrumented: checking for Mono instrumentation flag - NO
2023-12-19 23:29:02.773 16865-16865 newrelic                com.example.agent7                   E  Failed to detect New Relic instrumentation. The current runtime variant may be excluded from instrumentation, or instrumentation failed during your build process. Please visit http://support.newrelic.com.

Steps to Reproduce

  1. Download and use Android Studio (https://developer.android.com/studio) Right now it's Android Studio Hedgehog which brings Android Gradle Plugin 8.2.0 and Gradle Version 8.2
  2. Create a new project -> choose Empty Activity
  3. Go to the project-level build.gradle and add the New Relic Gradle plugin (it only allows 7.0.0 according to the gradle plugin repository https://plugins.gradle.org/plugin/com.newrelic.agent.android)
    // Top-level build file where you can add configuration options common to all sub-projects/modules.
    plugins {
    id 'com.android.application' version '8.2.0' apply false
    id 'org.jetbrains.kotlin.android' version '1.9.0' apply false
    id "com.newrelic.agent.android" version '7.0.0' apply false
    }
  4. Add the Android agent 7.2.0 dependency at the app-level build.gradle
    dependencies {
    implementation 'com.newrelic.agent.android:android-agent:7.2.0'
    ...
    }
  5. Add the required permissions according to the official doc (https://docs.newrelic.com/docs/mobile-monitoring/new-relic-mobile-android/install-configure/install-android-agent-gradle/)
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  6. Initialize the NewRelic in the onCreate function of your Activity or Application class:
    func onCreate() {
    NewRelic.enableFeature(FeatureFlag.NetworkRequests)
    NewRelic.enableFeature(FeatureFlag.CrashReporting)
    NewRelic.withApplicationToken("<GENERATED_TOKEN>")
       .withApplicationVersion("9999")
       .withApplicationBuild("APP-9999")
       .start(appContex)
    }
  7. Add a simple Button click and throw an exception.
    Button(onClick = {
      throw RuntimeException("Carlos Vargas Exception")
    }) {
     Text(text = "Click")
    }
  8. You will see the following error
    2023-12-20 00:09:45.723 17488-17488 newrelic                com.example.agent7                   I  isInstrumented: checking for Mono instrumentation flag - NO
    2023-12-20 00:09:45.723 17488-17488 newrelic                com.example.agent7                   E  Failed to detect New Relic instrumentation. The current runtime variant may be excluded from instrumentation, or instrumentation failed during your build process. Please visit http://support.newrelic.com.
    2023-12-20 00:09:45.725 17488-17488 newrelic                com.example.agent7                   I  isInstrumented: checking for Mono instrumentation flag - NO
    2023-12-20 00:09:45.725 17488-17488 newrelic                com.example.agent7                   E  Failed to detect New Relic instrumentation. The current runtime variant may be excluded from instrumentation, or instrumentation failed during your build process. Please visit http://support.newrelic.com.

Expected Behavior

I tried the same with Android Studio Electric Eel | 2022.1.1 Patch 2 (https://developer.android.com/studio/archive) which
brings Android Gradle Plugin 7.4.2 and Gradle Version 7.5. And I used Android agent 6.9.0

2023-12-20 00:16:02.017 27982-27982 com.newrelic.android    com.example.agent7         I  Application state monitor has started
2023-12-20 00:16:02.097 27982-27982 com.newrelic.android    com.example.agent7         I  Analytics Controller initialized: enabled[true]
2023-12-20 00:16:02.107 27982-27982 com.newrelic.android    com.example.agent7         I  Measurement Engine initialized.
2023-12-20 00:16:02.113 27982-27982 com.newrelic.android    com.example.agent7         I  New Relic Agent v6.9.0
2023-12-20 00:16:02.215 27982-28016 com.newrelic.android    com.example.agent7         I  Harvester: connected
2023-12-20 00:16:02.217 27982-28016 com.newrelic.android    com.example.agent7         I  Harvester: Sending [0] HTTP transactions.
2023-12-20 00:16:02.218 27982-28016 com.newrelic.android    com.example.agent7         I  Harvester: Sending [0] activity traces.
2023-12-20 00:16:02.218 27982-28016 com.newrelic.android    com.example.agent7         I  Harvester: Sending [0] session attributes.
2023-12-20 00:16:02.218 27982-28016 com.newrelic.android    com.example.agent7         I  Harvester: Sending [0] analytics events.
2023-12-20 00:16:04.147 27982-28015 com.newrelic.android    com.example.agent7         I  CrashSender: Crash 2928ed73-97be-42f0-bfeb-e2030fef9999 successfully submitted.

As you can see no errors are shown and it finally reports the crash.

Relevant Logs / Console output

Your Environment

Additional context

ndesai-newrelic commented 8 months ago

@CarlitosDroid can you follow this documentation to install android agent? https://docs.newrelic.com/docs/mobile-monitoring/new-relic-mobile-android/install-configure/install-android-agent-gradle/

CarlitosDroid commented 8 months ago

Thank you @ndesai-newrelic . I had to follow the section called Manually install the Android agent carefully, where they make use of mavenCentral() instead of the id "com.newrelic.agent.android" version '7.0.0' apply false from the gradle plugin repository.

I had to add code at the project-level build.gradle file

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath "com.newrelic.agent.android:agent-gradle-plugin:7.2.0"
    }
}

plugins {
    id 'com.android.application' version '8.2.0' apply false
    id 'org.jetbrains.kotlin.android' version '1.9.0' apply false
}

And I forgot to add id 'newrelic'

plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'
    id 'newrelic' 
}

Finally it's tracking.

2023-12-20 15:34:38.074 23321-23321 newrelic                com.example.agent7                   I  Application state monitor has started
2023-12-20 15:34:38.098 23321-23321 newrelic                com.example.agent7                   I  Analytics Controller initialized: enabled[true]
2023-12-20 15:34:38.106 23321-23321 newrelic                com.example.agent7                   I  Measurement Engine initialized.
2023-12-20 15:34:38.107 23321-23321 newrelic                com.example.agent7                   I  New Relic Agent v7.2.0
2023-12-20 15:34:38.116 23321-23349 newrelic                com.example.agent7                   I  Harvester: connected
2023-12-20 15:34:38.116 23321-23349 newrelic                com.example.agent7                   I  Harvester: Sending [0] HTTP transactions.
2023-12-20 15:34:38.116 23321-23349 newrelic                com.example.agent7                   I  Harvester: Sending [0] activity traces.
2023-12-20 15:34:38.117 23321-23349 newrelic                com.example.agent7                   I  Harvester: Sending [0] session attributes.
2023-12-20 15:34:38.117 23321-23349 newrelic                com.example.agent7                   I  Harvester: Sending [0] analytics events.
2023-12-20 15:34:38.617 23321-23348 newrelic                com.example.agent7                   I  CrashSender: Crash ae2a5d62-8a58-4e88-9b9d-99009d1e7e44 successfully submitted.

Additional Questions

  1. Why it's NOT working with id "com.newrelic.agent.android" version '7.0.0' apply false ?
  2. Why I cannot build the app when enabling minifyEnabled true?, I get a Missing classes detected while running R8. error Even if I use the Proguard config file (https://docs.newrelic.com/docs/mobile-monitoring/new-relic-mobile-android/install-configure/configure-proguard-or-dexguard-android-apps/) and it's a fresh basic android app.

Environment

ndesai-newrelic commented 8 months ago

for your 1 . https://github.com/newrelic/newrelic-android-agent/issues/150#issuecomment-1802314795

  1. can you share your build logs?
CarlitosDroid commented 8 months ago

Hi @ndesai-newrelic this is my full build logs

Executing tasks: [:app:assembleDebug, :app:assembleDebugUnitTest, :app:assembleDebugAndroidTest] in project C:\Users\CarlitosDroid\AndroidStudioProjects\Agent7

> Configure project :app
The New Relic plugin may not be compatible with Android Gradle plugin version 8.2.0.
AGP versions 7.0.0 - 8.2 are officially supported.
Set property 'newrelic.warning.agp=false' to disable this warning.
Set property 'newrelic.halt-on-warning=true' to treat warnings as fatal errors.
AGPBI: {"kind":"warning","text":"Accessing value buildConfigFields in variant debug has no effect as the feature buildConfig is disabled.","sources":[{}]}
AGPBI: {"kind":"warning","text":"Accessing value buildConfigFields in variant release has no effect as the feature buildConfig is disabled.","sources":[{}]}

> Task :app:createDebugVariantModel UP-TO-DATE
> Task :app:preBuild UP-TO-DATE
> Task :app:preDebugBuild UP-TO-DATE
> Task :app:mergeDebugNativeDebugMetadata NO-SOURCE
> Task :app:javaPreCompileDebug UP-TO-DATE
> Task :app:newrelicConfigDebug SKIPPED
> Task :app:checkDebugAarMetadata UP-TO-DATE
> Task :app:generateDebugResValues UP-TO-DATE
> Task :app:mapDebugSourceSetPaths UP-TO-DATE
> Task :app:generateDebugResources UP-TO-DATE
> Task :app:mergeDebugResources UP-TO-DATE
> Task :app:packageDebugResources UP-TO-DATE
> Task :app:parseDebugLocalResources UP-TO-DATE
> Task :app:createDebugCompatibleScreenManifests UP-TO-DATE
> Task :app:extractDeepLinksDebug UP-TO-DATE
> Task :app:processDebugMainManifest
> Task :app:processDebugManifest
> Task :app:mergeDebugShaders UP-TO-DATE
> Task :app:compileDebugShaders NO-SOURCE
> Task :app:generateDebugAssets UP-TO-DATE
> Task :app:mergeDebugAssets UP-TO-DATE
> Task :app:compressDebugAssets UP-TO-DATE
> Task :app:checkDebugDuplicateClasses UP-TO-DATE
> Task :app:mergeDebugArtProfile UP-TO-DATE
> Task :app:extractProguardFiles UP-TO-DATE
> Task :app:mergeDebugJniLibFolders UP-TO-DATE
> Task :app:mergeDebugNativeLibs NO-SOURCE
> Task :app:stripDebugDebugSymbols NO-SOURCE
> Task :app:validateSigningDebug UP-TO-DATE
> Task :app:writeDebugAppMetadata UP-TO-DATE
> Task :app:writeDebugSigningConfigVersions UP-TO-DATE
> Task :app:assembleDebugUnitTest UP-TO-DATE
> Task :app:preDebugAndroidTestBuild SKIPPED
> Task :app:checkDebugAndroidTestAarMetadata UP-TO-DATE
> Task :app:generateDebugAndroidTestResValues UP-TO-DATE
> Task :app:mapDebugAndroidTestSourceSetPaths UP-TO-DATE
> Task :app:generateDebugAndroidTestResources UP-TO-DATE
> Task :app:mergeDebugAndroidTestResources UP-TO-DATE
> Task :app:processDebugAndroidTestManifest UP-TO-DATE
> Task :app:processDebugAndroidTestResources UP-TO-DATE
> Task :app:javaPreCompileDebugAndroidTest UP-TO-DATE
> Task :app:mergeDebugAndroidTestShaders UP-TO-DATE
> Task :app:compileDebugAndroidTestShaders NO-SOURCE
> Task :app:generateDebugAndroidTestAssets UP-TO-DATE
> Task :app:mergeDebugAndroidTestAssets UP-TO-DATE
> Task :app:compressDebugAndroidTestAssets UP-TO-DATE
> Task :app:checkDebugAndroidTestDuplicateClasses UP-TO-DATE
> Task :app:mergeDebugAndroidTestJniLibFolders UP-TO-DATE
> Task :app:mergeDebugAndroidTestNativeLibs NO-SOURCE
> Task :app:stripDebugAndroidTestDebugSymbols NO-SOURCE
> Task :app:validateSigningDebugAndroidTest UP-TO-DATE
> Task :app:writeDebugAndroidTestSigningConfigVersions UP-TO-DATE
> Task :app:processDebugManifestForPackage
> Task :app:processDebugResources
> Task :app:compileDebugKotlin UP-TO-DATE
> Task :app:compileDebugJavaWithJavac UP-TO-DATE
> Task :app:newrelicTransformClassesForDebug UP-TO-DATE
> Task :app:expandDebugArtProfileWildcards UP-TO-DATE
> Task :app:mergeDebugGeneratedProguardFiles UP-TO-DATE
> Task :app:processDebugJavaRes UP-TO-DATE
> Task :app:mergeDebugJavaResource UP-TO-DATE
> Task :app:bundleDebugClassesToCompileJar UP-TO-DATE
> Task :app:compileDebugAndroidTestKotlin UP-TO-DATE
> Task :app:compileDebugAndroidTestJavaWithJavac NO-SOURCE
> Task :app:processDebugAndroidTestJavaRes UP-TO-DATE
> Task :app:mergeDebugAndroidTestJavaResource UP-TO-DATE

> Task :app:minifyDebugWithR8 FAILED
AGPBI: {"kind":"error","text":"Missing classes detected while running R8. Please add the missing classes or apply additional keep rules that are generated in C:\\Users\\CarlitosDroid\\AndroidStudioProjects\\Agent7\\app\\build\\outputs\\mapping\\debug\\missing_rules.txt.","sources":[{}]}
AGPBI: {"kind":"error","text":"Missing class com.newrelic.agent.android.ndk.AgentNDK$Builder (referenced from: void com.newrelic.agent.android.ndk.NativeReporting.<init>(android.content.Context, com.newrelic.agent.android.AgentConfiguration))\r\nMissing class com.newrelic.agent.android.ndk.AgentNDK (referenced from: void com.newrelic.agent.android.ndk.NativeReporting.<init>(android.content.Context, com.newrelic.agent.android.AgentConfiguration) and 5 other contexts)\r\nMissing class com.newrelic.agent.android.ndk.AgentNDKListener (referenced from: void com.newrelic.agent.android.ndk.NativeReporting.<init>(android.content.Context, com.newrelic.agent.android.AgentConfiguration) and 1 other context)","sources":[{}],"tool":"R8"}

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:minifyDebugWithR8'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.R8Task$R8Runnable
   > Compilation failed to complete

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.

BUILD FAILED in 2s
50 actionable tasks: 5 executed, 45 up-to-date

This is my proguard-rules.pro

# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
#   http://developer.android.com/guide/developing/tools/proguard.html

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
#   public *;
#}

# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable

# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile

-keep class com.newrelic.** { *; }
-dontwarn com.newrelic.**
-keepattributes Exceptions, Signature, InnerClasses, LineNumberTable, SourceFile, EnclosingMethod

##
## NewRelic Gradle plugin 7.x may require the following additions:
##
# Retain generic signatures of TypeToken and its subclasses if R8 version 3.0 full-mode is enabled.
# https://r8.googlesource.com/r8/+/refs/heads/master/compatibility-faq.md#r8-full-mode
-keepattributes Signature
-keep class com.newrelic.com.google.gson.reflect.TypeToken { *; }
-keep class * extends com.newrelic.com.google.gson.reflect.TypeToken
# For using GSON @Expose annotation
-keepattributes *Annotation*

These are the rules suggested in the generated file missing_rules.txt

# Please add these rules to your existing keep rules in order to suppress warnings.
# This is generated automatically by the Android Gradle plugin.
-dontwarn com.newrelic.agent.android.ndk.AgentNDK$Builder
-dontwarn com.newrelic.agent.android.ndk.AgentNDK
-dontwarn com.newrelic.agent.android.ndk.AgentNDKListener

What is wrong? I only enabled minify

buildTypes {
      release {
          minifyEnabled false
          proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
      }
      debug {
          minifyEnabled true
      }
}
SimonCierniewski commented 6 months ago

Hi, we are having the same issue, even on Debug build with AGPBI: {"kind":"error","text":"com.android.tools.r8.internal.Te: Invalid empty classfile"

gradle = gradle-8.4-bin androidGradlePlugin = "8.3.0" kotlin = "1.9.22" newRelic = "7.2.1" (but the same result also for 7.3.0, 7.2.0)

Proguard rules:

# New Relic
-keep class com.newrelic.** { *; }
-dontwarn com.newrelic.**
-keepattributes Exceptions, Signature, InnerClasses, LineNumberTable

Local Debug builds:

> Task :apppivot:dexBuilderDevDebug
AGPBI: {"kind":"error","text":"com.android.tools.r8.internal.Te: Invalid empty classfile","sources":[{"file":"/Users/simon/Documents/repos.nosync/pivot-android/inspire-android/apppivot/build/intermediates/classes/devDebug/ALL/newrelicTransformClassesForDevDebug/classes.jar"}],"tool":"D8"}
AGPBI: {"kind":"error","text":"com.android.tools.r8.internal.Te: Invalid empty classfile","sources":[{"file":"/Users/simon/Documents/repos.nosync/pivot-android/inspire-android/apppivot/build/intermediates/classes/devDebug/ALL/newrelicTransformClassesForDevDebug/classes.jar"}],"tool":"D8"}
AGPBI: {"kind":"error","text":"com.android.tools.r8.internal.Te: Invalid empty classfile","sources":[{"file":"/Users/simon/Documents/repos.nosync/pivot-android/inspire-android/apppivot/build/intermediates/classes/devDebug/ALL/newrelicTransformClassesForDevDebug/classes.jar"}],"tool":"D8"}
AGPBI: {"kind":"error","text":"com.android.tools.r8.internal.Te: Invalid empty classfile","sources":[{"file":"/Users/simon/Documents/repos.nosync/pivot-android/inspire-android/apppivot/build/intermediates/classes/devDebug/ALL/newrelicTransformClassesForDevDebug/classes.jar"}],"tool":"D8"}
AGPBI: {"kind":"error","text":"com.android.tools.r8.internal.Te: Invalid empty classfile","sources":[{"file":"/Users/simon/Documents/repos.nosync/pivot-android/inspire-android/apppivot/build/intermediates/classes/devDebug/ALL/newrelicTransformClassesForDevDebug/classes.jar"}],"tool":"D8"}
org.gradle.workers.WorkerExecutionException: There were multiple failures while executing work items
    at org.gradle.workers.internal.DefaultWorkerExecutor.workerExecutionException(DefaultWorkerExecutor.java:221)
    at org.gradle.workers.internal.DefaultWorkerExecutor.await(DefaultWorkerExecutor.java:201)
    at com.android.build.gradle.internal.tasks.DexArchiveBuilderTaskDelegate.doProcess(DexArchiveBuilderTaskDelegate.kt:215)
    at com.android.build.gradle.internal.tasks.DexArchiveBuilderTask.doTaskAction(DexArchiveBuilderTask.kt:224)
    at com.android.build.gradle.internal.tasks.NewIncrementalTask$taskAction$$inlined$recordTaskAction$1.invoke(BaseTask.kt:69)
    at com.android.build.gradle.internal.tasks.Blocks.recordSpan(Blocks.java:51)
    at com.android.build.gradle.internal.tasks.NewIncrementalTask.taskAction(NewIncrementalTask.kt:46)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.base/java.lang.reflect.Method.invoke(Unknown Source)
    at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:125)
    at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:45)
    at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:51)
    at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.execute(IncrementalTaskAction.java:26)
    at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:29)
    at org.gradle.api.internal.tasks.execution.TaskExecution$3.run(TaskExecution.java:248)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:73)
    at org.gradle.api.internal.tasks.execution.TaskExecution.executeAction(TaskExecution.java:233)
    at org.gradle.api.internal.tasks.execution.TaskExecution.executeActions(TaskExecution.java:216)
    at org.gradle.api.internal.tasks.execution.TaskExecution.executeWithPreviousOutputFiles(TaskExecution.java:199)
    at org.gradle.api.internal.tasks.execution.TaskExecution.execute(TaskExecution.java:166)
    at org.gradle.internal.execution.steps.ExecuteStep.executeInternal(ExecuteStep.java:105)
    at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:44)
    at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:59)
    at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:56)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:78)
    at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:56)
    at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:44)
    at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:67)
    at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:37)
    at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:41)
    at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:74)
    at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:55)
    at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:50)
    at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:28)
    at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.executeDelegateBroadcastingChanges(CaptureStateAfterExecutionStep.java:100)
    at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:72)
    at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:50)
    at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:40)
    at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:29)
    at org.gradle.internal.execution.steps.BuildCacheStep.executeWithoutCache(BuildCacheStep.java:179)
    at org.gradle.internal.execution.steps.BuildCacheStep.executeAndStoreInCache(BuildCacheStep.java:139)
    at org.gradle.internal.execution.steps.BuildCacheStep.lambda$executeWithCache$4(BuildCacheStep.java:106)
    at java.base/java.util.Optional.orElseGet(Unknown Source)
    at org.gradle.internal.execution.steps.BuildCacheStep.lambda$executeWithCache$5(BuildCacheStep.java:106)
    at org.gradle.internal.Try$Success.map(Try.java:164)
    at org.gradle.internal.execution.steps.BuildCacheStep.executeWithCache(BuildCacheStep.java:80)
    at org.gradle.internal.execution.steps.BuildCacheStep.lambda$execute$0(BuildCacheStep.java:69)
    at org.gradle.internal.Either$Left.fold(Either.java:115)
    at org.gradle.internal.execution.caching.CachingState.fold(CachingState.java:59)
    at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:68)
    at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:46)
    at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:36)
    at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:25)
    at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:36)
    at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:22)
    at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:91)
    at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$2(SkipUpToDateStep.java:55)
    at java.base/java.util.Optional.orElseGet(Unknown Source)
    at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:55)
    at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:37)
    at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:65)
    at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:36)
    at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:37)
    at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:27)
    at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:77)
    at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:38)
    at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:108)
    at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:55)
    at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:71)
    at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:45)
    at org.gradle.internal.execution.steps.SkipEmptyWorkStep.executeWithNonEmptySources(SkipEmptyWorkStep.java:177)
    at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:81)
    at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:53)
    at org.gradle.internal.execution.steps.RemoveUntrackedExecutionStateStep.execute(RemoveUntrackedExecutionStateStep.java:32)
    at org.gradle.internal.execution.steps.RemoveUntrackedExecutionStateStep.execute(RemoveUntrackedExecutionStateStep.java:21)
    at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38)
    at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:36)
    at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:23)
    at org.gradle.internal.execution.steps.CleanupStaleOutputsStep.execute(CleanupStaleOutputsStep.java:75)
    at org.gradle.internal.execution.steps.CleanupStaleOutputsStep.execute(CleanupStaleOutputsStep.java:41)
    at org.gradle.internal.execution.steps.ExecuteWorkBuildOperationFiringStep.lambda$execute$2(ExecuteWorkBuildOperationFiringStep.java:66)
    at java.base/java.util.Optional.orElseGet(Unknown Source)
    at org.gradle.internal.execution.steps.ExecuteWorkBuildOperationFiringStep.execute(ExecuteWorkBuildOperationFiringStep.java:66)
    at org.gradle.internal.execution.steps.ExecuteWorkBuildOperationFiringStep.execute(ExecuteWorkBuildOperationFiringStep.java:38)
    at org.gradle.internal.execution.steps.AssignWorkspaceStep.lambda$execute$0(AssignWorkspaceStep.java:32)
    at org.gradle.api.internal.tasks.execution.TaskExecution$4.withWorkspace(TaskExecution.java:293)
    at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:30)
    at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:21)
    at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:37)
    at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:27)
    at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:47)
    at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:34)
    at org.gradle.internal.execution.impl.DefaultExecutionEngine$1.execute(DefaultExecutionEngine.java:64)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:145)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:134)
    at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
    at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
    at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
    at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:74)
    at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:78)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
    at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:42)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:331)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:318)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.lambda$execute$0(DefaultTaskExecutionGraph.java:314)
    at org.gradle.internal.operations.CurrentBuildOperationRef.with(CurrentBuildOperationRef.java:80)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:314)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:303)
    at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:463)
    at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:380)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
    at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:47)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.base/java.lang.Thread.run(Unknown Source)
Cause 1: org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionException: A failure occurred while executing com.android.build.gradle.internal.dexing.DexWorkAction
    at org.gradle.workers.internal.DefaultWorkerExecutor$WorkItemExecution.waitForCompletion(DefaultWorkerExecutor.java:283)
    at org.gradle.internal.work.DefaultAsyncWorkTracker.lambda$waitForItemsAndGatherFailures$2(DefaultAsyncWorkTracker.java:130)
    at org.gradle.internal.Factories$1.create(Factories.java:31)
    at org.gradle.internal.work.DefaultWorkerLeaseService.withoutLocks(DefaultWorkerLeaseService.java:336)
    at org.gradle.internal.work.DefaultWorkerLeaseService.withoutLocks(DefaultWorkerLeaseService.java:319)
    at org.gradle.internal.work.DefaultWorkerLeaseService.withoutLock(DefaultWorkerLeaseService.java:324)
    at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForItemsAndGatherFailures(DefaultAsyncWorkTracker.java:126)
    at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForItemsAndGatherFailures(DefaultAsyncWorkTracker.java:88)
    at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForAll(DefaultAsyncWorkTracker.java:78)
    at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForCompletion(DefaultAsyncWorkTracker.java:66)
    at org.gradle.workers.internal.DefaultWorkerExecutor.await(DefaultWorkerExecutor.java:199)
    at com.android.build.gradle.internal.tasks.DexArchiveBuilderTaskDelegate.doProcess(DexArchiveBuilderTaskDelegate.kt:215)
    at com.android.build.gradle.internal.tasks.DexArchiveBuilderTask.doTaskAction(DexArchiveBuilderTask.kt:224)
    at com.android.build.gradle.internal.tasks.NewIncrementalTask$taskAction$$inlined$recordTaskAction$1.invoke(BaseTask.kt:69)
    at com.android.build.gradle.internal.tasks.Blocks.recordSpan(Blocks.java:51)
    at com.android.build.gradle.internal.tasks.NewIncrementalTask.taskAction(NewIncrementalTask.kt:46)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.base/java.lang.reflect.Method.invoke(Unknown Source)
    at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:125)
    at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:45)
    at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:51)
    at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.execute(IncrementalTaskAction.java:26)
    at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:29)
    at org.gradle.api.internal.tasks.execution.TaskExecution$3.run(TaskExecution.java:248)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:73)
    at org.gradle.api.internal.tasks.execution.TaskExecution.executeAction(TaskExecution.java:233)
    at org.gradle.api.internal.tasks.execution.TaskExecution.executeActions(TaskExecution.java:216)
    at org.gradle.api.internal.tasks.execution.TaskExecution.executeWithPreviousOutputFiles(TaskExecution.java:199)
    at org.gradle.api.internal.tasks.execution.TaskExecution.execute(TaskExecution.java:166)
    at org.gradle.internal.execution.steps.ExecuteStep.executeInternal(ExecuteStep.java:105)
    at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:44)
    at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:59)
    at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:56)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:78)
    at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:56)
    at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:44)
    at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:67)
    at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:37)
    at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:41)
    at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:74)
    at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:55)
    at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:50)
    at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:28)
    at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.executeDelegateBroadcastingChanges(CaptureStateAfterExecutionStep.java:100)
    at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:72)
    at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:50)
    at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:40)
    at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:29)
    at org.gradle.internal.execution.steps.BuildCacheStep.executeWithoutCache(BuildCacheStep.java:179)
    at org.gradle.internal.execution.steps.BuildCacheStep.executeAndStoreInCache(BuildCacheStep.java:139)
    at org.gradle.internal.execution.steps.BuildCacheStep.lambda$executeWithCache$4(BuildCacheStep.java:106)
    at java.base/java.util.Optional.orElseGet(Unknown Source)
    at org.gradle.internal.execution.steps.BuildCacheStep.lambda$executeWithCache$5(BuildCacheStep.java:106)
    at org.gradle.internal.Try$Success.map(Try.java:164)
    at org.gradle.internal.execution.steps.BuildCacheStep.executeWithCache(BuildCacheStep.java:80)
    at org.gradle.internal.execution.steps.BuildCacheStep.lambda$execute$0(BuildCacheStep.java:69)
    at org.gradle.internal.Either$Left.fold(Either.java:115)
    at org.gradle.internal.execution.caching.CachingState.fold(CachingState.java:59)
    at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:68)
    at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:46)
    at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:36)
    at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:25)
    at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:36)
    at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:22)
    at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:91)
    at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$2(SkipUpToDateStep.java:55)
    at java.base/java.util.Optional.orElseGet(Unknown Source)
    at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:55)
    at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:37)
    at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:65)
    at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:36)
    at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:37)
    at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:27)
    at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:77)
    at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:38)
    at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:108)
    at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:55)
    at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:71)
    at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:45)
    at org.gradle.internal.execution.steps.SkipEmptyWorkStep.executeWithNonEmptySources(SkipEmptyWorkStep.java:177)
    at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:81)
    at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:53)
    at org.gradle.internal.execution.steps.RemoveUntrackedExecutionStateStep.execute(RemoveUntrackedExecutionStateStep.java:32)
    at org.gradle.internal.execution.steps.RemoveUntrackedExecutionStateStep.execute(RemoveUntrackedExecutionStateStep.java:21)
    at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38)
    at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:36)
    at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:23)
    at org.gradle.internal.execution.steps.CleanupStaleOutputsStep.execute(CleanupStaleOutputsStep.java:75)
    at org.gradle.internal.execution.steps.CleanupStaleOutputsStep.execute(CleanupStaleOutputsStep.java:41)
    at org.gradle.internal.execution.steps.ExecuteWorkBuildOperationFiringStep.lambda$execute$2(ExecuteWorkBuildOperationFiringStep.java:66)
    at java.base/java.util.Optional.orElseGet(Unknown Source)
    at org.gradle.internal.execution.steps.ExecuteWorkBuildOperationFiringStep.execute(ExecuteWorkBuildOperationFiringStep.java:66)
    at org.gradle.internal.execution.steps.ExecuteWorkBuildOperationFiringStep.execute(ExecuteWorkBuildOperationFiringStep.java:38)
    at org.gradle.internal.execution.steps.AssignWorkspaceStep.lambda$execute$0(AssignWorkspaceStep.java:32)
    at org.gradle.api.internal.tasks.execution.TaskExecution$4.withWorkspace(TaskExecution.java:293)
    at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:30)
    at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:21)
    at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:37)
    at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:27)
    at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:47)
    at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:34)
    at org.gradle.internal.execution.impl.DefaultExecutionEngine$1.execute(DefaultExecutionEngine.java:64)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:145)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:134)
    at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
    at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
    at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
    at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:74)
    at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:78)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
    at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:42)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:331)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:318)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.lambda$execute$0(DefaultTaskExecutionGraph.java:314)
    at org.gradle.internal.operations.CurrentBuildOperationRef.with(CurrentBuildOperationRef.java:80)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:314)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:303)
    at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:463)
    at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:380)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
    at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:47)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.base/java.lang.Thread.run(Unknown Source)
Caused by: org.gradle.tooling.BuildException: Failed to process: /Users/simon/Documents/repos.nosync/pivot-android/inspire-android/apppivot/build/intermediates/classes/devDebug/ALL/newrelicTransformClassesForDevDebug/classes.jar
    at com.android.build.gradle.internal.dexing.DexWorkAction.run(DexWorkAction.kt:53)
    at com.android.build.gradle.internal.profile.ProfileAwareWorkAction.execute(ProfileAwareWorkAction.kt:74)
    at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:63)
    at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:66)
    at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:62)
    at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:100)
    at org.gradle.workers.internal.NoIsolationWorkerFactory$1.lambda$execute$0(NoIsolationWorkerFactory.java:62)
    at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44)
    at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:78)
    at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41)
    at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:59)
    at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$0(DefaultWorkerExecutor.java:170)
    at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
    at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:187)
    at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.access$700(DefaultConditionalExecutionQueue.java:120)
    at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner$1.run(DefaultConditionalExecutionQueue.java:162)
    at org.gradle.internal.Factories$1.create(Factories.java:31)
    at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:264)
    at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:128)
    at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:133)
    at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:157)
    at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:126)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
    ... 5 more
Caused by: com.android.builder.dexing.DexArchiveBuilderException: Failed to process: /Users/simon/Documents/repos.nosync/pivot-android/inspire-android/apppivot/build/intermediates/classes/devDebug/ALL/newrelicTransformClassesForDevDebug/classes.jar
    at com.android.build.gradle.internal.dexing.DexWorkActionKt.process(DexWorkAction.kt:187)
    at com.android.build.gradle.internal.dexing.DexWorkActionKt.processNonIncrementally(DexWorkAction.kt:146)
    at com.android.build.gradle.internal.dexing.DexWorkActionKt.launchProcessing(DexWorkAction.kt:73)
    at com.android.build.gradle.internal.dexing.DexWorkAction.run(DexWorkAction.kt:45)
    ... 36 more
Caused by: com.android.builder.dexing.DexArchiveBuilderException: Error while dexing.
    at com.android.builder.dexing.D8DexArchiveBuilder.getExceptionToRethrow(D8DexArchiveBuilder.java:188)
    at com.android.builder.dexing.D8DexArchiveBuilder.convert(D8DexArchiveBuilder.java:127)
    at com.android.build.gradle.internal.dexing.DexWorkActionKt.process(DexWorkAction.kt:178)
    ... 39 more
Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete, origin: /Users/simon/Documents/repos.nosync/pivot-android/inspire-android/apppivot/build/intermediates/classes/devDebug/ALL/newrelicTransformClassesForDevDebug/classes.jar:org/bouncycastle/asn1/cmc/BodyPartID.class
    at Version.fakeStackEntry(Version_8.3.36.java:0)
    at com.android.tools.r8.Q.a(R8_8.3.36_105749e874d3a6b61922c0593faf4d112f3ca718bdcf6de1a5b5c9b0c4e012bf:5)
    at com.android.tools.r8.internal.po.a(R8_8.3.36_105749e874d3a6b61922c0593faf4d112f3ca718bdcf6de1a5b5c9b0c4e012bf:244)
    at com.android.tools.r8.internal.po.a(R8_8.3.36_105749e874d3a6b61922c0593faf4d112f3ca718bdcf6de1a5b5c9b0c4e012bf:90)
    at com.android.tools.r8.internal.po.a(R8_8.3.36_105749e874d3a6b61922c0593faf4d112f3ca718bdcf6de1a5b5c9b0c4e012bf:909)
    at com.android.tools.r8.internal.po.b(R8_8.3.36_105749e874d3a6b61922c0593faf4d112f3ca718bdcf6de1a5b5c9b0c4e012bf:99)
    at com.android.tools.r8.D8.run(R8_8.3.36_105749e874d3a6b61922c0593faf4d112f3ca718bdcf6de1a5b5c9b0c4e012bf:11)
    at com.android.builder.dexing.D8DexArchiveBuilder.convert(D8DexArchiveBuilder.java:125)
    ... 40 more
Caused by: com.android.tools.r8.internal.Te: Invalid empty classfile
    at com.android.tools.r8.graph.i4.a(R8_8.3.36_105749e874d3a6b61922c0593faf4d112f3ca718bdcf6de1a5b5c9b0c4e012bf:698)
    at com.android.tools.r8.internal.po.a(R8_8.3.36_105749e874d3a6b61922c0593faf4d112f3ca718bdcf6de1a5b5c9b0c4e012bf:825)
    at com.android.tools.r8.internal.po.a(R8_8.3.36_105749e874d3a6b61922c0593faf4d112f3ca718bdcf6de1a5b5c9b0c4e012bf:1522)
    at com.android.tools.r8.internal.po.a(R8_8.3.36_105749e874d3a6b61922c0593faf4d112f3ca718bdcf6de1a5b5c9b0c4e012bf:1785)
    at com.android.tools.r8.graph.i4.b(R8_8.3.36_105749e874d3a6b61922c0593faf4d112f3ca718bdcf6de1a5b5c9b0c4e012bf:2)
    at com.android.tools.r8.dex.a.a(R8_8.3.36_105749e874d3a6b61922c0593faf4d112f3ca718bdcf6de1a5b5c9b0c4e012bf:84)
    at com.android.tools.r8.internal.Te0.a(R8_8.3.36_105749e874d3a6b61922c0593faf4d112f3ca718bdcf6de1a5b5c9b0c4e012bf:342)
    at com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:131)
    at com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:75)
    at com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:82)
    at com.google.common.util.concurrent.MoreExecutors$DirectExecutorService.execute(MoreExecutors.java:327)
    at java.base/java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
    at com.google.common.util.concurrent.AbstractListeningExecutorService.submit(AbstractListeningExecutorService.java:79)
    at com.google.common.util.concurrent.AbstractListeningExecutorService.submit(AbstractListeningExecutorService.java:37)
    at com.android.tools.r8.internal.hf0.submit(R8_8.3.36_105749e874d3a6b61922c0593faf4d112f3ca718bdcf6de1a5b5c9b0c4e012bf:33)
    at com.android.tools.r8.internal.Te0.a(R8_8.3.36_105749e874d3a6b61922c0593faf4d112f3ca718bdcf6de1a5b5c9b0c4e012bf:400)
    at com.android.tools.r8.internal.Te0.b(R8_8.3.36_105749e874d3a6b61922c0593faf4d112f3ca718bdcf6de1a5b5c9b0c4e012bf:107)
    at com.android.tools.r8.dex.a.a(R8_8.3.36_105749e874d3a6b61922c0593faf4d112f3ca718bdcf6de1a5b5c9b0c4e012bf:82)
    at com.android.tools.r8.dex.a.b(R8_8.3.36_105749e874d3a6b61922c0593faf4d112f3ca718bdcf6de1a5b5c9b0c4e012bf:96)
    at com.android.tools.r8.dex.c.a(R8_8.3.36_105749e874d3a6b61922c0593faf4d112f3ca718bdcf6de1a5b5c9b0c4e012bf:246)
    at com.android.tools.r8.dex.c.a(R8_8.3.36_105749e874d3a6b61922c0593faf4d112f3ca718bdcf6de1a5b5c9b0c4e012bf:222)
    at com.android.tools.r8.dex.c.a(R8_8.3.36_105749e874d3a6b61922c0593faf4d112f3ca718bdcf6de1a5b5c9b0c4e012bf:219)
    at com.android.tools.r8.D8.a(R8_8.3.36_105749e874d3a6b61922c0593faf4d112f3ca718bdcf6de1a5b5c9b0c4e012bf:809)
    at com.android.tools.r8.D8.d(R8_8.3.36_105749e874d3a6b61922c0593faf4d112f3ca718bdcf6de1a5b5c9b0c4e012bf:212)
    at com.android.tools.r8.D8.b(R8_8.3.36_105749e874d3a6b61922c0593faf4d112f3ca718bdcf6de1a5b5c9b0c4e012bf:502)
    at com.android.tools.r8.internal.po.a(R8_8.3.36_105749e874d3a6b61922c0593faf4d112f3ca718bdcf6de1a5b5c9b0c4e012bf:906)
    ... 43 more
    Suppressed: java.lang.RuntimeException: java.util.concurrent.ExecutionException: com.android.tools.r8.internal.Te: Invalid empty classfile
        at com.android.tools.r8.dex.c.a(R8_8.3.36_105749e874d3a6b61922c0593faf4d112f3ca718bdcf6de1a5b5c9b0c4e012bf:268)
        ... 49 more
    Caused by: java.util.concurrent.ExecutionException: com.android.tools.r8.internal.Te: Invalid empty classfile
        at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:592)
        at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:551)
        at com.google.common.util.concurrent.FluentFuture$TrustedFuture.get(FluentFuture.java:91)
        at com.android.tools.r8.internal.hf0.awaitFutures(R8_8.3.36_105749e874d3a6b61922c0593faf4d112f3ca718bdcf6de1a5b5c9b0c4e012bf:41)
        at com.android.tools.r8.internal.Te0.a(R8_8.3.36_105749e874d3a6b61922c0593faf4d112f3ca718bdcf6de1a5b5c9b0c4e012bf:69)
        at com.android.tools.r8.dex.c.a(R8_8.3.36_105749e874d3a6b61922c0593faf4d112f3ca718bdcf6de1a5b5c9b0c4e012bf:247)
        ... 49 more
    Caused by: [CIRCULAR REFERENCE: com.android.tools.r8.internal.Te: Invalid empty classfile]

> Task :apppivot:dexBuilderDevDebug FAILED

CircleCI Release build:

> Task :apppivot:minifyProdReleaseWithR8 FAILED
ERROR: /home/circleci/*************/inspire-android/apppivot/build/intermediates/classes/prodRelease/ALL/newrelicTransformClassesForProdRelease/classes.jar: R8: com.android.tools.r8.internal.Te: Invalid empty classfile
ASM Instrumentation process wasn't able to resolve some classes, this means that
the instrumented classes might contain corrupt stack frames. Make sure the
dependencies that contain these classes are on the runtime or the provided
classpath. Otherwise, the jvm might fail to load the corrupt classes at runtime
when running in a jvm environment like unit tests.
ndesai-newrelic commented 1 month ago

@SimonCierniewski is it still the issue?

vascoV commented 1 month ago

@ndesai-newrelic We also experiencing the same issue as @SimonCierniewski with the following parameters android-gradle-pligin: 8.5.0 gradle-versio:8.7 kotlin-version:2.0 new-relic:7.5.0

ndesai-newrelic commented 1 month ago

@vascoV can you share you project and app level build.gradle files?

vascoV commented 2 weeks ago

Hello, @ndesai-newrelic. Sorry for the late response, yes here you go:

Project Level Gradle:

buildscript {
    repositories {
        google()
        mavenCentral()
        mavenLocal()
        gradlePluginPortal()
        maven { url "https://plugins.gradle.org/m2/" }
        maven { url 'https://repo.brightcove.com/releases' }
        maven {
            url 'https://newsint.jfrog.io/newsint/plugins-releases'
            credentials {
                username = WIRELESS_ARTIFACTORY_USER
                password = WIRELESS_ARTIFACTORY_PASSWORD
            }
        }
        maven {
            url 's3://covatic-repo-release.s3-eu-west-2.amazonaws.com'
            credentials(AwsCredentials) {
                accessKey = WIRELESS_COVATIC_AWS_ACCESS_KEY
                secretKey = WIRELESS_COVATIC_AWS_SECRET_KEY
            }
        }
    }
    dependencies {
        apply from: "./dependencies/libraries.gradle"

        classpath "com.android.tools.build:gradle:${androidGradlePluginVersion}"
        classpath "com.google.gms:google-services:${googleServicesVersion}"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlinVersion}"
        classpath "org.jacoco:org.jacoco.core:${jacocoVersion}"
        classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$navVersion"
        classpath "org.jfrog.buildinfo:build-info-extractor-gradle:$buildInfoExtractorVersion"
        classpath "com.google.firebase:perf-plugin:$perfPluginVersion"
        classpath "androidx.room:room-gradle-plugin:$roomVersion"
        classpath"com.newrelic.agent.android:agent-gradle-plugin:$newRelicVersion"
    }
}
plugins {
    id 'com.google.devtools.ksp' version "${kspVersion}" apply false
}
apply plugin: "com.jfrog.artifactory"
apply plugin: 'maven-publish'

allprojects {
    repositories {
        google()
        mavenCentral()
        gradlePluginPortal()
        maven { url "https://jitpack.io" }
        maven { url "https://s3.amazonaws.com/repo.commonsware.com" }
        maven { url 'https://repo.brightcove.com/releases' }
        maven {
            url 'https://newsint.jfrog.io/newsint/nuk-wireless'
            credentials {
                username = WIRELESS_ARTIFACTORY_USER
                password = WIRELESS_ARTIFACTORY_PASSWORD
            }
        }
        maven { url "https://maven.tealiumiq.com/android/releases" }
        maven {
            url "https://raw.githubusercontent.com/adswizz/ad-sdk-android/master/releases"
            credentials(HttpHeaderCredentials) {
                name = "Authorization"
                value = WIRELESS_ADSWIZZ_BEARER_TOKEN
            }
            authentication {
                header(HttpHeaderAuthentication)
            }
        }
        maven {
            url 's3://covatic-repo-release.s3-eu-west-2.amazonaws.com'
            credentials(AwsCredentials) {
                accessKey = WIRELESS_COVATIC_AWS_ACCESS_KEY
                secretKey = WIRELESS_COVATIC_AWS_SECRET_KEY
            }
        }
        mavenLocal()
    }

    //https://stackoverflow.com/questions/68884589/caused-by-java-lang-exception-no-native-library-is-found-for-os-name-mac-and-o
    configurations.all {
        resolutionStrategy {
            force 'org.xerial:sqlite-jdbc:3.34.0'
        }
    }
    tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
        kotlinOptions {
            jvmTarget = "1.8"
            freeCompilerArgs += [
                    "-opt-in=kotlin.time.ExperimentalTime",
                    "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
            ]
        }
    }
}

artifactory {
    contextUrl = "${WIRELESS_ARTIFACTORY_CONTEXT_URL}"
    //The base Artifactory URL if not overridden by the publisher/resolver
    publish {
        repository {
            repoKey = 'nuk-wireless'
            username = WIRELESS_ARTIFACTORY_USER
            password = WIRELESS_ARTIFACTORY_PASSWORD
            maven = true
        }
        defaults {
            publications('mavenJava')
            publishArtifacts = true
        }
    }
    resolve {
        repository {
            repoKey = 'libs-releases'
            username = WIRELESS_ARTIFACTORY_USER
            password = WIRELESS_ARTIFACTORY_PASSWORD
            maven = true
        }
    }
}

//task installGitHook(type: Copy) {
//    from new File(rootProject.rootDir, 'scripts/pre-commit-macos.sh')
//    into { new File(rootProject.rootDir, '.git/hooks') }
//    rename("pre-commit-macos.sh", 'pre-commit')
//    fileMode 0777
//}
//tasks.getByPath(':app:preBuild').dependsOn installGitHook

task clean(type: Delete) {
    delete rootProject.buildDir
}

task testAll {
    def product = project.findProperty("product") ?: System.getenv('PRODUCT') ?: 'Talksport'
    def flavor = project.findProperty("flavor") ?: System.getenv('FLAVOR') ?: 'LocalDebug'
    dependsOn(':frames:testDebugUnitTest').finalizedBy(":frames:jacocoTestCoverageVerification")
    dependsOn(':login:testDebugUnitTest').finalizedBy(":login:jacocoTestCoverageVerification")
    dependsOn(':media:testDebugUnitTest').finalizedBy(":media:jacocoTestCoverageVerification")
    dependsOn(':core:testDebugUnitTest').finalizedBy(":core:jacocoTestCoverageVerification")
    dependsOn(":app:test${product}${flavor}UnitTest").finalizedBy(":app:jacocoTestCoverageVerification")
}

task installAll {
    def flavor = project.findProperty("flavor") ?: System.getenv('FLAVOR') ?: 'LocalDebug'
    dependsOn(":app:assembleTalkradio${flavor}").finalizedBy(":app:installTalkradio${flavor}")
    dependsOn(":app:assembleTalksport${flavor}").finalizedBy(":app:installTalksport${flavor}")
    dependsOn(":app:assembleTimesradio${flavor}").finalizedBy(":app:installTimesradio${flavor}")
    dependsOn(":app:assembleVirginradio${flavor}").finalizedBy(":app:installVirginradio${flavor}")
}

task lintAll {
    def product = project.findProperty("product") ?: System.getenv('PRODUCT') ?: 'Talksport'
    def flavor = project.findProperty("flavor") ?: System.getenv('FLAVOR') ?: 'LocalDebug'
    dependsOn(':login:lintDebug')
    dependsOn(':core:lintDebug')
    dependsOn(':frames:lintDebug')
    dependsOn(":app:lint${product}${flavor}")
}

task checkAll {
    dependsOn(':testAll')
    dependsOn(':lintAll')
}

task assembleFlavor {
    def product = project.findProperty("product") ?: System.getenv('PRODUCT') ?: 'Talksport'
    def flavor = project.findProperty("flavor") ?: System.getenv('FLAVOR') ?: 'LocalDebug'
    dependsOn(":app:assemble${product}${flavor}")
}

task assembleAll {
    def flavor = project.findProperty("flavor") ?: System.getenv('FLAVOR') ?: 'LocalDebug'
    dependsOn(":app:assembleTalkradio${flavor}")
    dependsOn(":app:assembleTimesradio${flavor}")
    dependsOn(":app:assembleTalksport${flavor}")
    dependsOn(":app:assembleVirginradio${flavor}")
}

task bundleAll {
    def flavor = project.findProperty("flavor") ?: System.getenv('FLAVOR') ?: 'LocalDebug'
    dependsOn(":app:bundleTalkradio${flavor}")
    dependsOn(":app:bundleTimesradio${flavor}")
    dependsOn(":app:bundleTalksport${flavor}")
    dependsOn(":app:bundleVirginradio${flavor}")
}

task assembleProdDebug {
    def flavor = 'ProdDebug'
    dependsOn(":app:assembleTalkradio${flavor}")
    dependsOn(":app:assembleTimesradio${flavor}")
    dependsOn(":app:assembleTalksport${flavor}")
    dependsOn(":app:assembleVirginradio${flavor}")
}

//this is required for migration from kotlin 1.4.3 to kotlin 1.5.0
//you can try to remove it and verify by executing jacoco test reporting
subprojects {
    configurations.all {
        resolutionStrategy {
            eachDependency { DependencyResolveDetails details ->
                if ('org.jacoco' == details.requested.group) {
                    details.useVersion "${jacocoVersion}"
                }
            }
        }
    }
}

App Level Gradle Files

plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'jacoco'
    id 'com.google.gms.google-services'
    id 'kotlin-parcelize'
    id 'androidx.navigation.safeargs'
    id 'com.google.devtools.ksp'
    id 'newrelic'
}
apply from: '../ktlint.gradle'
apply from: '../dependencies/android_commons.gradle'
apply from: '../dependencies/env_flavour.gradle'
apply from: '../dependencies/coverage_filter.gradle'

def getBuildNumber = { ->
    def rawBuildNumber = System.getenv("CIRCLE_BUILD_NUM")
            ?: System.getenv("BITRISE_BUILD_NUMBER")
            ?: '100000'
    def buildNumber = rawBuildNumber.toInteger()
    return buildNumber
}

def classDrs = fileTree(dir: "${buildDir}/tmp/kotlin-classes", excludes: fileFilter)
def srcDrs = fileTree(dir: "${project.projectDir}/src/main/java")
def execData = fileTree(dir: "$buildDir", includes: [
        "jacoco/*.exec",
        "jacoco/code-coverage/connected/*coverage.ec"
])
task jacocoTestReport(type: JacocoReport, dependsOn: [":app:compileTalksportLocalDebugUnitTestKotlin", ":app:testTalksportLocalDebugUnitTest"]) {
    doFirst {
        delete fileTree(dir: "${buildDir}/classes", include: "**/JiBX_*.class")
    }
    classDirectories.setFrom(classDrs)
    sourceDirectories.setFrom(srcDrs)
    additionalSourceDirs.setFrom(srcDrs)
    executionData.setFrom(execData)

    reports {
        xml {
            enabled true
        }
        html {
            enabled true
        }
        html.destination file("${buildDir}/jacocoOutput")
    }
}

task jacocoTestCoverageVerification(type: JacocoCoverageVerification, dependsOn: ['jacocoTestReport']) {
    classDirectories.setFrom(classDrs)
    sourceDirectories.setFrom(srcDrs)
    additionalSourceDirs.setFrom(srcDrs)
    executionData.setFrom(execData)

    violationRules {
        setFailOnViolation(true)
        rule {
            limit {
                minimum = 0.03
            }
        }
    }
}

android {
    buildFeatures {
        viewBinding = true
        buildConfig = true
    }
    defaultConfig {
        multiDexEnabled true
        manifestPlaceholders = [auth0Domain: "@string/com_auth0_app_domain", auth0Scheme: "@string/application_id"]

        buildConfigField "String", "PUBLICATION_URL", '"apps/%s"'
        buildConfigField "String", "SEARCH_URL", '"search?q=%s"'
        buildConfigField "String", "MANIFEST_URL", '"manifest/manifest.json"'
        buildConfigField "String", "THEATER_URL", '"apps/{app}/theaters/{theater}"'
        buildConfigField "String", "REMOTE_MEDIA_URL", '"apps/%s/automotive/audio"'
        buildConfigField "String", "ALEXA_AUTH_PATH", '"/accountlinking/v1/amazon/alexa/tenants/wls/application-groups/{app}/account/authorize"'

        buildConfigField "String", "BRANCH_VENDOR_ID", '"5e7f6927b8e05c1c467daa5d"'
        buildConfigField "String", "BRIGHTCOVE_ACCOUNT_ID", '"6023583704001"'
        buildConfigField "String", "BRIGHTCOVE_POLICY_ID", '"BCpkADawqM1yXVpExeVhpwQbEVfVAKM0miy-627JrX9faPo8MtB1a_RSDBtog8Bd_hsQna3M3PC6YTTdz62Wdihp1126o7nVGG448rDdoEfivwOmTqx1Yf3m54mGIiBxi633LeX5-jJhfbsR"'
    }
    signingConfigs {
        talksportRelease {
            keyAlias TALKSPORT_KEY_ALIAS
            keyPassword TALKSPORT_KEY_PASSWORD
            storeFile file(TALKSPORT_KEYSTORE_PATH)
            storePassword TALKSPORT_STORE_PASSWORD
        }
        timesradioRelease {
            keyAlias TIMESRADIO_KEY_ALIAS
            keyPassword TIMESRADIO_KEY_PASSWORD
            storeFile file(TIMESRADIO_KEYSTORE_PATH)
            storePassword TIMESRADIO_STORE_PASSWORD
        }
        virginradioRelease {
            keyAlias VIRGINRADIO_KEY_ALIAS
            keyPassword VIRGINRADIO_KEY_PASSWORD
            storeFile file(VIRGINRADIO_KEYSTORE_PATH)
            storePassword VIRGINRADIO_STORE_PASSWORD
        }
        talkradioRelease {
            keyAlias TALKRADIO_KEY_ALIAS
            keyPassword TALKRADIO_KEY_PASSWORD
            storeFile file(TALKRADIO_KEYSTORE_PATH)
            storePassword TALKRADIO_STORE_PASSWORD
        }
        debug {
            keyAlias "debug!"
            keyPassword "debug!"
            storeFile file("../debug.key")
            storePassword "debug!"
        }
    }
    bundle {
        language {
            enableSplit = false
        }
        density {
            enableSplit = true
        }
        abi {
            enableSplit = true
        }
    }
    packagingOptions {
        resources {
            excludes += ['third_party/java_src/error_prone/project/annotations/Annotations.gwt.xml', 'third_party/java_src/error_prone/project/annotations/Google_internal.gwt.xml', 'error_prone/Annotations.gwt.xml', 'META-INF/atomicfu.kotlin_module']
            pickFirsts += ['META-INF/data_release.kotlin_module', 'META-INF/data_debug.kotlin_module', 'META-INF/core_release.kotlin_module']
        }
    }

    flavorDimensions "app", "env"

    productFlavors {
        talksport {
            dimension "app"
            applicationId "com.talksport.tsliveen"
            versionCode getBuildNumber()
            versionName "55.0.0.${getBuildNumber()}"
            buildConfigField "String", "PUBLICATION", '"talksport-v10"'
        }
        timesradio {
            dimension "app"
            applicationId "com.times.radio"
            versionCode getBuildNumber()
            versionName "55.0.0.${getBuildNumber()}"
            buildConfigField "String", "PUBLICATION", '"times-radio-v10"'
        }
        virginradio {
            dimension "app"
            applicationId "uk.co.virginradio.android"
            versionCode getBuildNumber()
            versionName "55.0.0.${getBuildNumber()}"
            buildConfigField "String", "PUBLICATION", '"virgin-radio-v10"'
        }
        talkradio {
            dimension "app"
            applicationId "uk.co.talkradio.android"
            versionCode getBuildNumber()
            versionName "55.0.0.${getBuildNumber()}"
            buildConfigField "String", "PUBLICATION", '"talk-radio-v10"'
        }
    }

    buildTypes {
        debug {
            signingConfig signingConfigs.debug
            FirebasePerformance {
                // Set this flag to 'false' to disable @AddTrace annotation processing and
                // automatic monitoring of HTTP/S network requests
                // for a specific build variant at compile time.
                instrumentationEnabled false
            }
        }
        release {
            shrinkResources true
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            testProguardFile "proguard-test-rules.pro"

            productFlavors.talksport.signingConfig signingConfigs.talksportRelease
            productFlavors.timesradio.signingConfig signingConfigs.timesradioRelease
            productFlavors.virginradio.signingConfig signingConfigs.virginradioRelease
            productFlavors.talkradio.signingConfig signingConfigs.talkradioRelease
        }
    }

    variantFilter { variant ->
        def names = variant.flavors*.name
        if (variant.buildType.name == "release" && !names.contains("prod")) {
            setIgnore(true)
        }
    }

    configurations {
        all {
            resolutionStrategy.cacheChangingModulesFor 1, 'seconds'
        }
        cleanedAnnotations
        implementation.exclude group: 'com.intellij', module: 'annotations'
    }

    testOptions {
        unitTests {
            includeAndroidResources = true
            returnDefaultValues = true
        }
    }
    lint {
        abortOnError false
        lintConfig file('lint.xml')
    }
    namespace 'com.talksport.tsliveen'
    applicationVariants.all { variant ->
        variant.resValue "string", "application_id", variant.applicationId
        variant.outputs.all { output ->
            outputFileName = "${variant.name}-${variant.versionName}.apk"
        }
    }
    compileOptions {
        coreLibraryDesugaringEnabled = true
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = "1.8"
    }
    aaptOptions {
        ignoreAssetsPattern 'FuturaPT-Bold.otf'
    }
}

dependencies {
    implementation project(":login")
    implementation project(':core')
    implementation project(":marketing")
    implementation project(":player")

    implementation 'com.optimizely.ab:android-sdk:4.0.0'

    implementation "com.newrelic.agent.android:android-agent:$newRelicVersion"

    implementation "com.squareup.retrofit2:converter-scalars:${retrofitVersion}"
    implementation "com.squareup.okhttp3:logging-interceptor:${okHttpVersion}"

    implementation 'com.github.Dotmetrics:AndroidDistribution:1.7.3@aar'

    if (LEAK_CANARY_ENABLED.toBoolean()) {
        //https://github.com/square/leakcanary
        debugImplementation "com.squareup.leakcanary:leakcanary-android:2.7"
    }

    //https://github.com/bumptech/glide
    implementation "com.github.bumptech.glide:glide:${glideVersion}"
    ksp "com.github.bumptech.glide:compiler:${glideVersion}"

    implementation "com.google.ads.interactivemedia.v3:interactivemedia:3.34.0"

    implementation "com.brightcove.player:android-ima-plugin:${anpVersion}"
    implementation "com.brightcove.player:android-dai-plugin:${anpVersion}"
    implementation "com.brightcove.player:android-appcompat-plugin:${anpVersion}"

    //https://github.com/google/dagger
    implementation "com.google.dagger:dagger:${daggerVersion}"
    ksp "com.google.dagger:dagger-compiler:${daggerVersion}"
    ksp "com.google.dagger:dagger-android-processor:${daggerVersion}"
    kspTest "com.google.dagger:dagger-compiler:${daggerVersion}"

    implementation "com.google.dagger:dagger-android:${daggerVersion}"
    implementation "com.google.dagger:dagger-android-support:${daggerVersion}"

    // covatic
    implementation("io.covatic.serendipity:serendipity-release:$covaticVersion@aar") {
        transitive = true
        changing = true
    }

    //https://developer.android.com/jetpack/androidx/releases/lifecycle
    implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycleVersion"

    //GDPR consent lib
    //https://github.com/SourcePointUSA/android-cmp-app
    //https://help.sourcepoint.com/en/articles/3059278-getting-started-with-the-sourcepoint-consent-library-for-android
    implementation "com.sourcepoint.cmplibrary:cmplibrary:${sourcepointVersion}"

    //https://mvnrepository.com/artifact/com.google.code.findbugs/jsr305
    implementation "com.google.code.findbugs:jsr305:${findbugsVersion}"

    //https://github.com/google/gson
    implementation "com.google.code.gson:gson:${googleGsonVersion}"

    //https://developer.android.com/jetpack/androidx/versions
    implementation "androidx.appcompat:appcompat:${appCompatVersion}"
    implementation "androidx.cardview:cardview:${cardViewVersion}"
    implementation "androidx.annotation:annotation:${annotationVersion}"
    implementation "androidx.constraintlayout:constraintlayout:${constraintLayoutVersion}"

    //https://github.com/material-components/material-components-android
    implementation "com.google.android.material:material:${materialVersion}"

    //https://github.com/JakeWharton/timber
    implementation "com.jakewharton.timber:timber:${timberVersion}"

    //https://docs.tealium.com/platforms/android-java/install/
    implementation "com.tealium:library:${tealiumVersion}"
    implementation "com.tealium:lifecycle:${tealiumLifecycleVersion}"

    testImplementation "junit:junit:${junitVersion}"
    testImplementation "org.jetbrains.kotlin:kotlin-test-junit:$kotlinVersion"

    //http://robolectric.org/
    testImplementation "org.robolectric:robolectric:${robolectricVersion}"

    //android testing
    testImplementation "androidx.test.ext:junit:${androidxTestVersion}"

    testImplementation "androidx.room:room-testing:${roomVersion}"
    testImplementation "androidx.test:rules:$androidTestRulesVersion"

    //https://help.branch.io/developers-hub/docs/android-basic-integration
    //https://search.maven.org/artifact/io.branch.sdk.android/library
    implementation "io.branch.sdk.android:library:${branchSdkVersion}"

    // Chrome Tab matching (enables 100% guaranteed matching based on cookies)
    //optional dependency for branch sdk
    implementation "androidx.browser:browser:${browserVersion}"

    // https://developer.android.com/jetpack/androidx/releases/activity
    implementation "androidx.fragment:fragment-ktx:${fragmenKtxVersion}"

    //https://developer.permutive.com/docs/android
    implementation "com.permutive.android:core:${permutiveCoreVersion}"

    implementation "com.squareup.okhttp3:logging-interceptor:${okHttpVersion}"

    //https://mvnrepository.com/artifact/com.squareup.okhttp3/mockwebserver
    testImplementation "com.squareup.okhttp3:mockwebserver:${okHttpVersion}"

    //https://developer.android.com/topic/security/data
    testImplementation "androidx.security:security-crypto:${androidCryptoVersion}"

    //https://firebase.google.com/docs/in-app-messaging/get-started?authuser=0&platform=android
    implementation platform("com.google.firebase:firebase-bom:${firebaseBoMVersion}")
    implementation 'com.google.firebase:firebase-inappmessaging-display'
    implementation 'com.google.firebase:firebase-messaging'
    implementation 'com.google.firebase:firebase-analytics'
    implementation 'com.google.firebase:firebase-crashlytics'
    implementation 'com.google.firebase:firebase-installations-ktx'

    implementation "androidx.navigation:navigation-fragment-ktx:$navVersion"
    implementation "androidx.navigation:navigation-ui-ktx:$navVersion"

    testImplementation project(':core-test')

    implementation("com.adswizz:adswizz-sdk:${adswizzVersion}")

    //https://documentation.onesignal.com/docs/android-sdk-setup
    implementation "com.onesignal:OneSignal:${oneSignalVersion}"

    implementation "com.android.support:multidex:${multiDexVersion}"

    implementation 'com.pierfrancescosoffritti.androidyoutubeplayer:core:12.1.0'
    implementation 'com.pierfrancescosoffritti.androidyoutubeplayer:chromecast-sender:0.26'
    implementation 'androidx.mediarouter:mediarouter:1.7.0'

    coreLibraryDesugaring "com.android.tools:desugar_jdk_libs:${desugarVersion}"

    implementation "com.google.android.play:review-ktx:${reviewVersion}"

    implementation "com.brightcove.player:exoplayer2:${brightcoveVersion}"
    implementation "com.brightcove.player:android-ssai-plugin:${brightcoveVersion}"

    implementation "com.squareup.retrofit2:converter-gson:${retrofitVersion}"

    implementation("androidx.room:room-ktx:$roomVersion")
    implementation "androidx.room:room-paging:${roomVersion}"

    // https://mvnrepository.com/artifact/androidx.paging/paging-runtime-ktx
    implementation "androidx.paging:paging-runtime-ktx:${paging3Version}"

    // https://mvnrepository.com/artifact/androidx.core/core-splashscreen
    implementation "androidx.core:core-splashscreen:${splashVersion}"

    //https://github.com/ChuckerTeam/chucker
    debugImplementation "com.github.chuckerteam.chucker:library:${chuckerVersion}"
    releaseImplementation "com.github.chuckerteam.chucker:library-no-op:${chuckerVersion}"

    //  https://developer.android.com/jetpack/androidx/releases/media3#declaring_dependencies
    implementation "androidx.media3:media3-exoplayer:$media3Version"
    implementation "androidx.media3:media3-ui:$media3Version"
    implementation "androidx.media3:media3-session:$media3Version"
    implementation "androidx.media3:media3-cast:$media3Version"
}

check.dependsOn ktlint
tonicfx commented 2 weeks ago

Hi, we have same problem since upgrade Koltin / AGP version / New Relic.

This is configuration logged when start build. 2024-08-29T11:46:52.376+0200 [DEBUG] [newrelic] Variant buildIds have been enabled 2024-08-29T11:46:52.377+0200 [INFO] [newrelic] New Relic Agent version: 7.5.1 2024-08-29T11:46:52.377+0200 [DEBUG] [newrelic] Android Gradle plugin version: 8.5.2 2024-08-29T11:46:52.377+0200 [DEBUG] [newrelic] Gradle version: 8.8 2024-08-29T11:46:52.377+0200 [DEBUG] [newrelic] Java version: 17 2024-08-29T11:46:52.377+0200 [DEBUG] [newrelic] Kotlin version: 1.9.22 2024-08-29T11:46:52.378+0200 [DEBUG] [newrelic] Gradle configuration cache enabled: false 2024-08-29T11:46:52.379+0200 [INFO] [newrelic] BuildMetrics[[agent:7.5.1, agp:8.5.2, gradle:8.8, java:17, kotlin:1.9.22, configCacheEnabled:false, variants:[debug:[minSdk:24, targetSdk:34], release:[minSdk:24, targetSdk:34], staging:[minSdk:24, targetSdk:34]]]] 2024-08-29T11:46:52.383+0200 [INFO] [newrelic] Instrumentation will be disabled for variants [debug] 2024-08-29T11:46:52.384+0200 [INFO] [newrelic] Instrumentation will be disabled for classes [com.toto.*] 2024-08-29T11:46:52.384+0200 [DEBUG] [newrelic] Maps will be tagged and uploaded for variants [staging, release] 2024-08-29T11:46:52.384+0200 [DEBUG] [newrelic] New Relic plugin loaded.

This is NewRelic gradle configuration

newrelic { uploadMapsForVariant("prodRelease", "recRelease", "preprodRelease") excludeVariantInstrumentation("None") excludePackageInstrumentation("org.jacoco.*", "org.bouncycastle.*") }

During build, there is a R8 stack trace.

AGPBI: {"kind":"error","text":"com.android.tools.r8.internal.Le: Different stack heights at jump target: 2 != 1","sources":[{"file":"/Users/E8039/Documents/respositories/front/app-mobile-fortuneo-android-3/fortuneo/build/intermediates/classes/recDebug/ALL/newrelicTransformClassesForRecDebug/classes.jar"}],"tool":"D8"} org.gradle.workers.WorkerExecutionException: There was a failure while executing work items at org.gradle.workers.internal.DefaultWorkerExecutor.workerExecutionException(DefaultWorkerExecutor.java:223) at org.gradle.workers.internal.DefaultWorkerExecutor.await(DefaultWorkerExecutor.java:205) at com.android.build.gradle.internal.tasks.DexArchiveBuilderTaskDelegate.doProcess(DexArchiveBuilderTaskDelegate.kt:215) at com.android.build.gradle.internal.tasks.DexArchiveBuilderTask.doTaskAction(DexArchiveBuilderTask.kt:225) at com.android.build.gradle.internal.tasks.NewIncrementalTask$taskAction$$inlined$recordTaskAction$1.invoke(BaseTask.kt:69) at com.android.build.gradle.internal.tasks.Blocks.recordSpan(Blocks.java:51) at com.android.build.gradle.internal.tasks.NewIncrementalTask.taskAction(NewIncrementalTask.kt:46) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) at java.base/java.lang.reflect.Method.invoke(Method.java:577) at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:125) at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:45) at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:51) at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.execute(IncrementalTaskAction.java:26) at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:29) at org.gradle.api.internal.tasks.execution.TaskExecution$3.run(TaskExecution.java:244) at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29) at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47) at org.gradle.api.internal.tasks.execution.TaskExecution.executeAction(TaskExecution.java:229) at org.gradle.api.internal.tasks.execution.TaskExecution.executeActions(TaskExecution.java:212) at org.gradle.api.internal.tasks.execution.TaskExecution.executeWithPreviousOutputFiles(TaskExecution.java:195) at org.gradle.api.internal.tasks.execution.TaskExecution.execute(TaskExecution.java:162) at org.gradle.internal.execution.steps.ExecuteStep.executeInternal(ExecuteStep.java:105) at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:44) at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:59) at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:56) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:209) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53) at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:56) at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:44) at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:41) at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:74) at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:55) at org.gradle.internal.execution.steps.PreCreateOutputParentsStep.execute(PreCreateOutputParentsStep.java:50) at org.gradle.internal.execution.steps.PreCreateOutputParentsStep.execute(PreCreateOutputParentsStep.java:28) at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:67) at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:37) at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:61) at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:26) at org.gradle.internal.execution.steps.CaptureOutputsAfterExecutionStep.execute(CaptureOutputsAfterExecutionStep.java:67) at org.gradle.internal.execution.steps.CaptureOutputsAfterExecutionStep.execute(CaptureOutputsAfterExecutionStep.java:45) at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:40) at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:29) at org.gradle.internal.execution.steps.BuildCacheStep.executeWithoutCache(BuildCacheStep.java:189) at org.gradle.internal.execution.steps.BuildCacheStep.executeAndStoreInCache(BuildCacheStep.java:145) at org.gradle.internal.execution.steps.BuildCacheStep.lambda$executeWithCache$4(BuildCacheStep.java:101) at java.base/java.util.Optional.orElseGet(Optional.java:364) at org.gradle.internal.execution.steps.BuildCacheStep.lambda$executeWithCache$5(BuildCacheStep.java:101) at org.gradle.internal.Try$Success.map(Try.java:164) at org.gradle.internal.execution.steps.BuildCacheStep.executeWithCache(BuildCacheStep.java:85) at org.gradle.internal.execution.steps.BuildCacheStep.lambda$execute$0(BuildCacheStep.java:74) at org.gradle.internal.Either$Left.fold(Either.java:115) at org.gradle.internal.execution.caching.CachingState.fold(CachingState.java:62) at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:73) at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:48) at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:46) at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:35) at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:76) at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$2(SkipUpToDateStep.java:54) at java.base/java.util.Optional.orElseGet(Optional.java:364) at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:54) at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:36) at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:37) at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:27) at org.gradle.internal.execution.steps.ResolveIncrementalCachingStateStep.executeDelegate(ResolveIncrementalCachingStateStep.java:49) at org.gradle.internal.execution.steps.ResolveIncrementalCachingStateStep.executeDelegate(ResolveIncrementalCachingStateStep.java:27) at org.gradle.internal.execution.steps.AbstractResolveCachingStateStep.execute(AbstractResolveCachingStateStep.java:71) at org.gradle.internal.execution.steps.AbstractResolveCachingStateStep.execute(AbstractResolveCachingStateStep.java:39) at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:65) at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:36) at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:106) at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:55) at org.gradle.internal.execution.steps.AbstractCaptureStateBeforeExecutionStep.execute(AbstractCaptureStateBeforeExecutionStep.java:64) at org.gradle.internal.execution.steps.AbstractCaptureStateBeforeExecutionStep.execute(AbstractCaptureStateBeforeExecutionStep.java:43) at org.gradle.internal.execution.steps.AbstractSkipEmptyWorkStep.executeWithNonEmptySources(AbstractSkipEmptyWorkStep.java:125) at org.gradle.internal.execution.steps.AbstractSkipEmptyWorkStep.execute(AbstractSkipEmptyWorkStep.java:56) at org.gradle.internal.execution.steps.AbstractSkipEmptyWorkStep.execute(AbstractSkipEmptyWorkStep.java:36) at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38) at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:36) at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:23) at org.gradle.internal.execution.steps.HandleStaleOutputsStep.execute(HandleStaleOutputsStep.java:75) at org.gradle.internal.execution.steps.HandleStaleOutputsStep.execute(HandleStaleOutputsStep.java:41) at org.gradle.internal.execution.steps.AssignMutableWorkspaceStep.lambda$execute$0(AssignMutableWorkspaceStep.java:35) at org.gradle.api.internal.tasks.execution.TaskExecution$4.withWorkspace(TaskExecution.java:289) at org.gradle.internal.execution.steps.AssignMutableWorkspaceStep.execute(AssignMutableWorkspaceStep.java:31) at org.gradle.internal.execution.steps.AssignMutableWorkspaceStep.execute(AssignMutableWorkspaceStep.java:22) at org.gradle.internal.execution.steps.ChoosePipelineStep.execute(ChoosePipelineStep.java:40) at org.gradle.internal.execution.steps.ChoosePipelineStep.execute(ChoosePipelineStep.java:23) at org.gradle.internal.execution.steps.ExecuteWorkBuildOperationFiringStep.lambda$execute$2(ExecuteWorkBuildOperationFiringStep.java:67) at java.base/java.util.Optional.orElseGet(Optional.java:364) at org.gradle.internal.execution.steps.ExecuteWorkBuildOperationFiringStep.execute(ExecuteWorkBuildOperationFiringStep.java:67) at org.gradle.internal.execution.steps.ExecuteWorkBuildOperationFiringStep.execute(ExecuteWorkBuildOperationFiringStep.java:39) at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:46) at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:34) at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:48) at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:35) at org.gradle.internal.execution.impl.DefaultExecutionEngine$1.execute(DefaultExecutionEngine.java:61) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:127) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:116) at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46) at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51) at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57) at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:74) at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:209) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52) at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:42) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:331) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:318) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.lambda$execute$0(DefaultTaskExecutionGraph.java:314) at org.gradle.internal.operations.CurrentBuildOperationRef.with(CurrentBuildOperationRef.java:80) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:314) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:303) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:463) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:380) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:47) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:833) Caused by: org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionException: A failure occurred while executing com.android.build.gradle.internal.dexing.DexWorkAction at org.gradle.workers.internal.DefaultWorkerExecutor$WorkItemExecution.waitForCompletion(DefaultWorkerExecutor.java:287) at org.gradle.internal.work.DefaultAsyncWorkTracker.lambda$waitForItemsAndGatherFailures$2(DefaultAsyncWorkTracker.java:130) at org.gradle.internal.Factories$1.create(Factories.java:31) at org.gradle.internal.work.DefaultWorkerLeaseService.withoutLocks(DefaultWorkerLeaseService.java:336) at org.gradle.internal.work.DefaultWorkerLeaseService.withoutLocks(DefaultWorkerLeaseService.java:319) at org.gradle.internal.work.DefaultWorkerLeaseService.withoutLock(DefaultWorkerLeaseService.java:324) at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForItemsAndGatherFailures(DefaultAsyncWorkTracker.java:126) at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForItemsAndGatherFailures(DefaultAsyncWorkTracker.java:88) at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForAll(DefaultAsyncWorkTracker.java:78) at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForCompletion(DefaultAsyncWorkTracker.java:66) at org.gradle.workers.internal.DefaultWorkerExecutor.await(DefaultWorkerExecutor.java:203) ... Caused by: [CIRCULAR REFERENCE: com.android.tools.r8.internal.Le: Different stack heights at jump target: 2 != 1]

@ndesai-newrelic may be this is the same problem.

Thanks for your help.

ywang-nr commented 2 weeks ago

@tonicfx We have seen a similar issue recently, it's most likely caused by an incompatible third party SDK.

If you run a commend: ./gradlew clean build -d | grep newrelic] > build.txt

Attached the build.txt here we can take a look which SDK is causing the problem. It should also show you at one of the lines of caused by. Once you find the incompatible SDK, include the SDK in the following configuration would help: excludePackageInstrumentation("org.jacoco.", "org.bouncycastle.")

tonicfx commented 1 week ago

Hi @ywang-nr , thanks for your help. Since my previous message, we find the dependancies who take problem, and fix that by exclude this package. ;)

ywang-nr commented 1 week ago

@tonicfx Great, thanks for the update!