firebase / firebase-android-sdk

Firebase Android SDK
https://firebase.google.com
Apache License 2.0
2.28k stars 578 forks source link

Circular dependency between the following tasks: :app:dataBindingGenBaseClassesDebug #5925

Closed thatfiredev closed 6 months ago

thatfiredev commented 6 months ago

[REQUIRED] Step 2: Describe your environment

[REQUIRED] Step 3: Describe the problem

After upgrading to v3.0.0 of the Crashlytics Gradle plugin I get the following build error:

Circular dependency between the following tasks:
:app:dataBindingGenBaseClassesDebug
+--- :app:mergeDebugResources
|    \--- :app:injectCrashlyticsMappingFileIdDebug
|         \--- :app:dataBindingGenBaseClassesDebug (*)
\--- :app:parseDebugLocalResources
     \--- :app:packageDebugResources
          \--- :app:injectCrashlyticsMappingFileIdDebug (*)

Steps to reproduce:

A reproducible build can be found in https://github.com/firebase/quickstart-android/pull/1608

Confirmed that the build succeeds with version 2.9.9: https://github.com/firebase/quickstart-android/pull/1607

jqi26 commented 6 months ago

We're experiencing the same issue in our project after upgrading to 3.0.0.

T8RIN commented 6 months ago

Totally agree, circular dependency crashes the build starting from 3.0.0

DaXmYsT commented 6 months ago

Same here.

classpath ("com.google.firebase:firebase-crashlytics-gradle:2.9.9")

with firebase_bom_version = "33.0.0" is working. I think best is to stay at that version.

ArcherEmiya05 commented 6 months ago

We are experiencing this issue as well, thought it was another AGP update issue.

thatfiredev commented 6 months ago

Hey everyone!

I have informed the Crashlytics engineers and they are working on it. In the meantime, please stick to firebase-crashlytics-gradle:2.9.9.

This issue will be updated once the fix is released. Thank you!

mrober commented 6 months ago

This is because the injectCrashlyticsMappingFileId task generates a random mapping file id as an Android resource. But we didn't want it to make new random id on every build if the source never changed. The task took variant.sources as the only input, so it would get triggered by source changing.

The variant.sources includes generated sources, and viewBinding generates code from the Android resources. A circular dependency.

We don't have a good api to query for only the static sources. So instead, I will update the task to decide if it's up to date by the heuristic: Both isMinifyEnabled and mappingFileUploadEnabled are false, and a blank mapping file id was already generated once. This means rebuilding an app with obfuscation enabled will always generate a new mapping file id, even if nothing changed. This is no worse than what the previous plugin did. Debug builds most likely will not have obfuscation enabled, meaning this task can stay up to date during development.

I will update this issue when the fix is released.

Osanosa commented 6 months ago

On my end, it's Circular dependency between the following tasks: :app:extractDeepLinksRelease --- :app:injectCrashlyticsMappingFileIdRelease --- :app:kspReleaseKotlin --- :app:processReleaseResources +--- :app:mapReleaseSourceSetPaths | --- :app:injectCrashlyticsMappingFileIdRelease () +--- :app:mergeReleaseResources | --- :app:injectCrashlyticsMappingFileIdRelease () +--- :app:parseReleaseLocalResources | --- :app:packageReleaseResources | --- :app:injectCrashlyticsMappingFileIdRelease () +--- :app:processReleaseManifest | --- :app:processReleaseMainManifest | --- :app:extractDeepLinksRelease () --- :app:processReleaseManifestForPackage --- :app:processReleaseManifest (*)

mrober commented 6 months ago

Thanks for the details everybody!

I have implemented a fix for this and verified it with viewBinder. I also added new functional tests that validate use cases with code generation. This issue was caused by anything that generates code and depends on Android resources.

I am going to update here again when it is released. For now, anybody can try the latest changes from the pre-release build #5733.

JustKhit commented 6 months ago

Hey Guys,

Thanks for sharing. Also have faced the same issue.

this works fine com.google.firebase:firebase-bom:32.8.1 and com.google.firebase:firebase-crashlytics-gradle:2.9.9

AndroidDeveloperLB commented 6 months ago

I have this too, but the error is a bit longer than the above:

Circular dependency between the following tasks:
:app:dataBindingGenBaseClassesDebug
+--- :app:mergeDebugResources
|    +--- :app:generateDebugLocaleConfig
|    |    \--- :app:extractDebugSupportedLocales
|    |         \--- :app:injectCrashlyticsMappingFileIdDebug
|    |              +--- :app:dataBindingGenBaseClassesDebug (*)
|    |              \--- :app:kspDebugKotlin
|    |                   +--- :app:dataBindingGenBaseClassesDebug (*)
|    |                   \--- :app:processDebugResources
|    |                        +--- :app:mapDebugSourceSetPaths
|    |                        |    \--- :app:injectCrashlyticsMappingFileIdDebug (*)
|    |                        +--- :app:mergeDebugResources (*)
|    |                        +--- :app:parseDebugLocalResources
|    |                        |    \--- :app:packageDebugResources
|    |                        |         +--- :app:generateDebugLocaleConfig (*)
|    |                        |         \--- :app:injectCrashlyticsMappingFileIdDebug (*)
|    |                        +--- :app:processDebugManifest
|    |                        |    \--- :app:processDebugMainManifest
|    |                        |         \--- :app:extractDeepLinksDebug
|    |                        |              \--- :app:injectCrashlyticsMappingFileIdDebug (*)
|    |                        \--- :app:processDebugManifestForPackage
|    |                             \--- :app:processDebugManifest (*)
|    \--- :app:injectCrashlyticsMappingFileIdDebug (*)
\--- :app:parseDebugLocalResources (*)

BTW, I use this (as 2.9.9 worked fine with it) :

classpath "com.google.firebase:firebase-crashlytics-gradle:3.0.0"

How do I switch to the "id..." ? Or even to kts format? When I try the one as "id..." , it causes a different issue even if I use 2.9.9:

error.txt

EDIT: tried to copy from a new project. I think it works fine. Wonder how hard it would be to switch to kts though.

jeffdcamp commented 6 months ago

I'm seeing a slightly different error, but I'm assuming that it is related to this issue:

Circular dependency between the following tasks:
:app:extractDebugSupportedLocales
\--- :app:injectCrashlyticsMappingFileIdDebug
     \--- :app:kspDebugKotlin
          \--- :app:processDebugResources
               +--- :app:mapDebugSourceSetPaths
               |    \--- :app:injectCrashlyticsMappingFileIdDebug (*)
               +--- :app:mergeDebugResources
               |    +--- :app:generateDebugLocaleConfig
               |    |    \--- :app:extractDebugSupportedLocales (*)
               |    \--- :app:injectCrashlyticsMappingFileIdDebug (*)
               +--- :app:parseDebugLocalResources
               |    \--- :app:packageDebugResources
               |         +--- :app:generateDebugLocaleConfig (*)
               |         \--- :app:injectCrashlyticsMappingFileIdDebug (*)
               +--- :app:processDebugManifest
               |    \--- :app:processDebugMainManifest
               |         \--- :app:extractDeepLinksDebug
               |              \--- :app:injectCrashlyticsMappingFileIdDebug (*)
               \--- :app:processDebugManifestForPackage
                    \--- :app:processDebugManifest (*)

This error only occurred after updating from 2.9.9 to 3.0.0

Mercandj commented 6 months ago

Idem on my side, "com.google.firebase:firebase-crashlytics-gradle:3.0.0" -> Circular dependency between the following tasks....

Tolriq commented 6 months ago

@mrober Some of use uses googleServicesResourceRoot for manual handling but seems it's also removed in 3.0.0, please also document how we are supposed to do it after this please.

project.afterEvaluate {
    tasks.withType<com.google.firebase.crashlytics.buildtools.gradle.tasks.UploadMappingFileTask> {
        val myDirProp = project.objects.directoryProperty().fileValue(file("../crashlytics"))
        googleServicesResourceRoot.value(myDirProp)
    }
}
tachyonlabs commented 6 months ago

I just got this too after updating Android Studio etc.; thanks for the workaround and that you're getting it fixed!

mrober commented 6 months ago

@Tolriq the googleServicesResourceRoot was an implementation detail. Our instructions don't tell you to use it anymore. It was a deliberate decision to remove that, since now the Firebase Google-Services plugin can support different apps for different variants of your app.

If you want to have the same app package name in different Firebase projects, you can follow https://developers.google.com/android/guides/google-services-plugin#adding_the_json_file . Basically you can put different google-services.json files in different variant-specific directories.

If you want different package names for different variants in the same Firebase project, that will work out of the box. Just re-download your google-services.json file from the Firebase console, and it will have an entry for every app in your project.

Tolriq commented 6 months ago

@mrober I do not use the json and the associated plugin and do not want to, I also disable the mapping upload. That plugin actually brings nothing for my needs, just ton of pains when updating gradle and AGP.

I have everything already generated the way I want and needed and just want crashlytics to use that. I already also have tons of wrapping to ensure proper controllable startup via ressourcewrapper.

Please leave a way to continue to work like that.

SusmanScott commented 6 months ago

Am I reading this correctly that it was working in 3.0.0-alpha03 but not when 3.0.0 was released? Is there an estimate when it will be fixed in a non-alpha/beta version?

ahmed2146 commented 6 months ago

I am facing same issue with

classpath 'com.google.firebase:firebase-crashlytics-gradle:3.0.0' implementation platform('com.google.firebase:firebase-bom:33.0.0')

Circular dependency between the following tasks: :app:extractDeepLinksDebug --- :app:injectCrashlyticsMappingFileIdDebug --- :app:kaptDebugKotlin --- :app:kaptGenerateStubsDebugKotlin --- :app:processDebugResources +--- :app:mapDebugSourceSetPaths | --- :app:injectCrashlyticsMappingFileIdDebug () +--- :app:mergeDebugResources | --- :app:injectCrashlyticsMappingFileIdDebug () +--- :app:parseDebugLocalResources | --- :app:packageDebugResources | --- :app:injectCrashlyticsMappingFileIdDebug () +--- :app:processDebugManifest | --- :app:processDebugMainManifest | --- :app:extractDeepLinksDebug () --- :app:processDebugManifestForPackage --- :app:processDebugManifest (*)

mrober commented 6 months ago

@Tolriq can you please file a new issue about the no google-services plugin use case you have? We will do something for it. For now, you could set configure<CrashlyticsExtension> { mappingFileUploadEnabled = false } on all your variants and the Crashlytics plugin should not care that you don't have google-services.

mrober commented 6 months ago

Hey everybody, we will release 3.0.1 with this issue fixed in the next couple days. Sorry for the delay, we are pretty stretched right now. Thank you everyone for providing all the details and feedback!

AndroidDeveloperLB commented 6 months ago

Are there any new breaking code changes on 3.x versions?

mrober commented 6 months ago

@AndroidDeveloperLB https://firebase.google.com/docs/crashlytics/upgrade-to-crashlytics-gradle-plugin-v3 documents the breaking changes.

AndroidDeveloperLB commented 6 months ago

@mrober Thank you. Seems I don't use any of these and I don't even know what they are. Also seems all related to "Crashlytics extension". If I use only Crashlytics (auto-report crashes to Firebase website), I can ignore all of this, right? What is this "Crashlytics extension" ? How come I can't find information about it?

Sultan656 commented 6 months ago

facing the same issue any solution

FAILURE: Build failed with an exception.

(*) - details omitted (listed previously)

(*) - details omitted (listed previously)

at org.gradle.execution.plan.DetermineExecutionPlanAction.onOrderingCycle(DetermineExecutionPlanAction.java:296)
at org.gradle.execution.plan.DetermineExecutionPlanAction.processNodeQueue(DetermineExecutionPlanAction.java:188)
at org.gradle.execution.plan.DetermineExecutionPlanAction.run(DetermineExecutionPlanAction.java:94)
at org.gradle.execution.plan.DefaultExecutionPlan.determineExecutionPlan(DefaultExecutionPlan.java:225)
at org.gradle.internal.build.DefaultBuildWorkPreparer.populateWorkGraph(DefaultBuildWorkPreparer.java:43)
at org.gradle.internal.build.BuildOperationFiringBuildWorkPreparer$PopulateWorkGraph.populateTaskGraph(BuildOperationFiringBuildWorkPreparer.java:106)
at org.gradle.internal.build.BuildOperationFiringBuildWorkPreparer$PopulateWorkGraph.run(BuildOperationFiringBuildWorkPreparer.java:92)
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.internal.build.BuildOperationFiringBuildWorkPreparer.populateWorkGraph(BuildOperationFiringBuildWorkPreparer.java:67)
at org.gradle.internal.build.DefaultBuildLifecycleController.lambda$populateWorkGraph$8(DefaultBuildLifecycleController.java:189)
at org.gradle.internal.model.StateTransitionController.lambda$inState$1(StateTransitionController.java:99)
at org.gradle.internal.model.StateTransitionController.lambda$inState$2(StateTransitionController.java:114)
at org.gradle.internal.work.DefaultSynchronizer.withLock(DefaultSynchronizer.java:44)
at org.gradle.internal.model.StateTransitionController.inState(StateTransitionController.java:110)
at org.gradle.internal.model.StateTransitionController.inState(StateTransitionController.java:98)
at org.gradle.internal.build.DefaultBuildLifecycleController.populateWorkGraph(DefaultBuildLifecycleController.java:189)
at org.gradle.internal.build.DefaultBuildWorkGraphController$DefaultBuildWorkGraph.populateWorkGraph(DefaultBuildWorkGraphController.java:169)
at org.gradle.composite.internal.DefaultBuildController.populateWorkGraph(DefaultBuildController.java:76)
at org.gradle.composite.internal.DefaultIncludedBuildTaskGraph$DefaultBuildTreeWorkGraphBuilder.withWorkGraph(DefaultIncludedBuildTaskGraph.java:153)
at org.gradle.internal.buildtree.DefaultBuildTreeWorkPreparer.lambda$scheduleRequestedTasks$1(DefaultBuildTreeWorkPreparer.java:41)
at org.gradle.composite.internal.DefaultIncludedBuildTaskGraph$DefaultBuildTreeWorkGraph$1.run(DefaultIncludedBuildTaskGraph.java:209)
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.composite.internal.DefaultIncludedBuildTaskGraph$DefaultBuildTreeWorkGraph.scheduleWork(DefaultIncludedBuildTaskGraph.java:204)
at org.gradle.internal.buildtree.DefaultBuildTreeWorkPreparer.scheduleRequestedTasks(DefaultBuildTreeWorkPreparer.java:37)
at org.gradle.configurationcache.VintageBuildTreeWorkController$scheduleAndRunRequestedTasks$1.apply(VintageBuildTreeWorkController.kt:36)
at org.gradle.configurationcache.VintageBuildTreeWorkController$scheduleAndRunRequestedTasks$1.apply(VintageBuildTreeWorkController.kt:35)
at org.gradle.composite.internal.DefaultIncludedBuildTaskGraph.withNewWorkGraph(DefaultIncludedBuildTaskGraph.java:112)
at org.gradle.configurationcache.VintageBuildTreeWorkController.scheduleAndRunRequestedTasks(VintageBuildTreeWorkController.kt:35)
at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.lambda$scheduleAndRunTasks$1(DefaultBuildTreeLifecycleController.java:68)
at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.lambda$runBuild$4(DefaultBuildTreeLifecycleController.java:98)
at org.gradle.internal.model.StateTransitionController.lambda$transition$6(StateTransitionController.java:169)
at org.gradle.internal.model.StateTransitionController.doTransition(StateTransitionController.java:266)
at org.gradle.internal.model.StateTransitionController.lambda$transition$7(StateTransitionController.java:169)
at org.gradle.internal.work.DefaultSynchronizer.withLock(DefaultSynchronizer.java:44)
at org.gradle.internal.model.StateTransitionController.transition(StateTransitionController.java:169)
at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.runBuild(DefaultBuildTreeLifecycleController.java:95)
at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.scheduleAndRunTasks(DefaultBuildTreeLifecycleController.java:68)
at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.scheduleAndRunTasks(DefaultBuildTreeLifecycleController.java:63)
at org.gradle.tooling.internal.provider.runner.BuildModelActionRunner.run(BuildModelActionRunner.java:53)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.internal.buildtree.ProblemReportingBuildActionRunner.run(ProblemReportingBuildActionRunner.java:49)
at org.gradle.launcher.exec.BuildOutcomeReportingBuildActionRunner.run(BuildOutcomeReportingBuildActionRunner.java:65)
at org.gradle.tooling.internal.provider.FileSystemWatchingBuildActionRunner.run(FileSystemWatchingBuildActionRunner.java:140)
at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.run(BuildCompletionNotifyingBuildActionRunner.java:41)
at org.gradle.launcher.exec.RootBuildLifecycleBuildActionExecutor.lambda$execute$0(RootBuildLifecycleBuildActionExecutor.java:40)
at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:123)
at org.gradle.launcher.exec.RootBuildLifecycleBuildActionExecutor.execute(RootBuildLifecycleBuildActionExecutor.java:40)
at org.gradle.internal.buildtree.InitDeprecationLoggingActionExecutor.execute(InitDeprecationLoggingActionExecutor.java:62)
at org.gradle.internal.buildtree.InitProblems.execute(InitProblems.java:38)
at org.gradle.internal.buildtree.DefaultBuildTreeContext.execute(DefaultBuildTreeContext.java:40)
at org.gradle.launcher.exec.BuildTreeLifecycleBuildActionExecutor.lambda$execute$0(BuildTreeLifecycleBuildActionExecutor.java:65)
at org.gradle.internal.buildtree.BuildTreeState.run(BuildTreeState.java:58)
at org.gradle.launcher.exec.BuildTreeLifecycleBuildActionExecutor.execute(BuildTreeLifecycleBuildActionExecutor.java:65)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionExecutor$3.call(RunAsBuildOperationBuildActionExecutor.java:61)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionExecutor$3.call(RunAsBuildOperationBuildActionExecutor.java:57)
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.launcher.exec.RunAsBuildOperationBuildActionExecutor.execute(RunAsBuildOperationBuildActionExecutor.java:57)
at org.gradle.launcher.exec.RunAsWorkerThreadBuildActionExecutor.lambda$execute$0(RunAsWorkerThreadBuildActionExecutor.java:36)
at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:264)
at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:128)
at org.gradle.launcher.exec.RunAsWorkerThreadBuildActionExecutor.execute(RunAsWorkerThreadBuildActionExecutor.java:36)
at org.gradle.tooling.internal.provider.continuous.ContinuousBuildActionExecutor.execute(ContinuousBuildActionExecutor.java:110)
at org.gradle.tooling.internal.provider.SubscribableBuildActionExecutor.execute(SubscribableBuildActionExecutor.java:64)
at org.gradle.internal.session.DefaultBuildSessionContext.execute(DefaultBuildSessionContext.java:46)
at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter$ActionImpl.apply(BuildSessionLifecycleBuildActionExecuter.java:92)
at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter$ActionImpl.apply(BuildSessionLifecycleBuildActionExecuter.java:80)
at org.gradle.internal.session.BuildSessionState.run(BuildSessionState.java:69)
at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter.execute(BuildSessionLifecycleBuildActionExecuter.java:62)
at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter.execute(BuildSessionLifecycleBuildActionExecuter.java:41)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:64)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:32)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:51)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:39)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:47)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:31)
at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:65)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:39)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:29)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:35)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:78)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:75)
at org.gradle.util.internal.Swapper.swap(Swapper.java:38)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:75)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:64)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:63)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:84)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:52)
at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:297)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:47)

BUILD FAILED in 709ms

mustfaunlu commented 6 months ago

same issue

anthony-fresneau-kiplin commented 6 months ago

same issue

leinardi commented 6 months ago

To everyone experiencing the same problem: could you kindly consider clicking the :+1: reaction on the initial comment instead of posting a new comment simply stating "same issue"? Such comments don't offer any new insights and only clutter the feed for those following this matter.

androidacy-user commented 6 months ago

Confirmed fixed with 3.0.1 👍🏽

mrober commented 6 months ago

Hi everybody, version 3.0.1 has been released which resolves this issue. Thank you everybody for providing all the details! Closing this issue, but if anybody runs into any other problems please open a new issue.

Tolriq commented 6 months ago

@mrober For the record it seems with 3.0.1 the plugin no more yell on missing xml generated by the google plugin and so the googleServicesResourceRoot hack is not necessary anymore so I don't need it and won't open an issue as WAI.

jdelga commented 6 months ago

After upgrading to 3.0.1 I get this new error: https://github.com/firebase/firebase-android-sdk/issues/5962

kalyaniuge1986 commented 6 months ago

[REQUIRED] Step 2: Describe your environment

  • Android Studio version: _____
  • Firebase Component: Crashlytics Gradle Plugin
  • Component version: 3.0.0

[REQUIRED] Step 3: Describe the problem

After upgrading to v3.0.0 of the Crashlytics Gradle plugin I get the following build error:

Circular dependency between the following tasks:
:app:dataBindingGenBaseClassesDebug
+--- :app:mergeDebugResources
|    \--- :app:injectCrashlyticsMappingFileIdDebug
|         \--- :app:dataBindingGenBaseClassesDebug (*)
\--- :app:parseDebugLocalResources
     \--- :app:packageDebugResources
          \--- :app:injectCrashlyticsMappingFileIdDebug (*)

Steps to reproduce:

A reproducible build can be found in firebase/quickstart-android#1608

Confirmed that the build succeeds with version 2.9.9: firebase/quickstart-android#1607

use this classpath("com.google.firebase:firebase-crashlytics-gradle:3.0.1") classpath 'com.google.firebase:firebase-crashlytics-gradle:3.0.1'

kalyaniuge1986 commented 6 months ago

I am facing same issue with

classpath 'com.google.firebase:firebase-crashlytics-gradle:3.0.0' implementation platform('com.google.firebase:firebase-bom:33.0.0')

Circular dependency between the following tasks: :app:extractDeepLinksDebug --- :app:injectCrashlyticsMappingFileIdDebug --- :app:kaptDebugKotlin --- :app:kaptGenerateStubsDebugKotlin --- :app:processDebugResources +--- :app:mapDebugSourceSetPaths | --- :app:injectCrashlyticsMappingFileIdDebug () +--- :app:mergeDebugResources | --- :app:injectCrashlyticsMappingFileIdDebug () +--- :app:parseDebugLocalResources | --- :app:packageDebugResources | --- :app:injectCrashlyticsMappingFileIdDebug () +--- :app:processDebugManifest | --- :app:processDebugMainManifest | --- :app:extractDeepLinksDebug () --- :app:processDebugManifestForPackage --- :app:processDebugManifest (*) use this classpath("com.google.firebase:firebase-crashlytics-gradle:3.0.1") classpath 'com.google.firebase:firebase-crashlytics-gradle:3.0.1'

kalyaniuge1986 commented 6 months ago

use this

classpath("com.google.firebase:firebase-crashlytics-gradle:3.0.1") classpath 'com.google.firebase:firebase-crashlytics-gradle:3.0.1'

implementation 'com.google.firebase:firebase-crashlytics:19.0.0'

implementation("com.google.firebase:firebase-crashlytics:19.0.0")

DecadeVinhLe commented 5 months ago

I change crashingly to 2.9.9, and it works. So I guess u either add .jar file directly if using maven debugger or change to 2.9.9 if u use Groovy