Grpc-java: Trouble adding Google Services library on Android project with gRPC library

Created on 30 Sep 2019  路  12Comments  路  Source: grpc/grpc-java

I was trying to add Firebase Analytics into my Android project with gRPC library, in which Google Services library is also to be added.

By simply setting up the app from the Firebase console, upon syncing I have gotten the following error:

In project 'app' a resolved Google Play services library dependency depends on another at an exact version (e.g. "[2.3.2
,2.3.3]", but isn't being resolved to that version. Behavior exhibited by the library will be unknown.

Dependency failing: io.perfmark:perfmark-api:0.16.0 -> com.google.errorprone:error_prone_annotations@[2.3.2,2.3.3], but 
error_prone_annotations version was 2.3.2.

The following dependencies are project dependencies that are direct or have transitive dependencies that lead to the art
ifact with the issue.
-- Project 'app' depends onto io.grpc:grpc-api@{strictly 1.22.1}
-- Project 'app' depends onto io.grpc:[email protected]
-- Project 'app' depends onto io.perfmark:perfmark-api@{strictly 0.16.0}
-- Project 'app' depends onto io.grpc:[email protected]
-- Project 'app' depends onto io.grpc:grpc-stub@{strictly 1.22.1}
-- Project 'app' depends onto io.grpc:grpc-core@{strictly 1.22.1}
-- Project 'app' depends onto io.grpc:grpc-okhttp@{strictly 1.22.1}
-- Project 'app' depends onto io.grpc:grpc-protobuf-lite@{strictly 1.22.1}
-- Project 'app' depends onto io.grpc:[email protected]
-- Project 'app' depends onto com.google.errorprone:error_prone_annotations@{strictly 2.3.2}

For extended debugging info execute Gradle from the command line with ./gradlew --info :app:assembleDebug to see the dep
endency paths to the artifact. This error message came from the google-services Gradle plugin, report issues at https://
github.com/google/play-services-plugins and disable by adding "googleServices { disableVersionCheck = false }" to your b
uild.gradle file.

I am using gRPC version 1.22.1.
Downgrading to 1.21.1 results in no such errors showing up again, but it is more of a workaround than a solution.
The problem occurs from 1.22.0 onwards to the latest version.

My hunch on why this happens is because of version disparity at errorprone at line 34 and line 188.
https://github.com/grpc/grpc-java/blob/v1.22.x/build.gradle

gRPC version:

1.22.1

Operating system:

macOS 10.14.6

Reproduction steps:

  1. Clone this project and open in Android Studio:
    https://github.com/benz93chung/GrpcMvvm
  2. Set up a Firebase project, add Android app, and follow instructions (down the line the google-services.json and dependencies at the gradle files are being added)
  3. Sync

Full stacktrace:

org.gradle.api.internal.tasks.TaskDependencyResolveException: Could not determine the dependencies of task ':app:extractIncludeDebugProto'.
    at org.gradle.api.internal.tasks.CachingTaskDependencyResolveContext.getDependencies(CachingTaskDependencyResolveContext.java:68)
    at org.gradle.execution.plan.TaskDependencyResolver.resolveDependenciesFor(TaskDependencyResolver.java:46)
    at org.gradle.execution.plan.LocalTaskNode.getDependencies(LocalTaskNode.java:111)
    at org.gradle.execution.plan.LocalTaskNode.resolveDependencies(LocalTaskNode.java:79)
    at org.gradle.execution.plan.DefaultExecutionPlan.addEntryTasks(DefaultExecutionPlan.java:177)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph.addEntryTasks(DefaultTaskExecutionGraph.java:139)
    at org.gradle.execution.TaskNameResolvingBuildConfigurationAction.configure(TaskNameResolvingBuildConfigurationAction.java:48)
    at org.gradle.execution.DefaultBuildConfigurationActionExecuter.configure(DefaultBuildConfigurationActionExecuter.java:57)
    at org.gradle.execution.DefaultBuildConfigurationActionExecuter.access$200(DefaultBuildConfigurationActionExecuter.java:26)
    at org.gradle.execution.DefaultBuildConfigurationActionExecuter$2.proceed(DefaultBuildConfigurationActionExecuter.java:63)
    at org.gradle.execution.DefaultTasksBuildExecutionAction.configure(DefaultTasksBuildExecutionAction.java:44)
    at org.gradle.execution.DefaultBuildConfigurationActionExecuter.configure(DefaultBuildConfigurationActionExecuter.java:57)
    at org.gradle.execution.DefaultBuildConfigurationActionExecuter.access$200(DefaultBuildConfigurationActionExecuter.java:26)
    at org.gradle.execution.DefaultBuildConfigurationActionExecuter$2.proceed(DefaultBuildConfigurationActionExecuter.java:63)
    at org.gradle.execution.ExcludedTaskFilteringBuildConfigurationAction.configure(ExcludedTaskFilteringBuildConfigurationAction.java:47)
    at org.gradle.execution.DefaultBuildConfigurationActionExecuter.configure(DefaultBuildConfigurationActionExecuter.java:57)
    at org.gradle.execution.DefaultBuildConfigurationActionExecuter.access$200(DefaultBuildConfigurationActionExecuter.java:26)
    at org.gradle.execution.DefaultBuildConfigurationActionExecuter$1.run(DefaultBuildConfigurationActionExecuter.java:43)
    at org.gradle.internal.Factories$1.create(Factories.java:25)
    at org.gradle.api.internal.project.DefaultProjectStateRegistry.withLenientState(DefaultProjectStateRegistry.java:132)
    at org.gradle.api.internal.project.DefaultProjectStateRegistry.withLenientState(DefaultProjectStateRegistry.java:124)
    at org.gradle.execution.DefaultBuildConfigurationActionExecuter.select(DefaultBuildConfigurationActionExecuter.java:39)
    at org.gradle.initialization.DefaultGradleLauncher$CalculateTaskGraph.run(DefaultGradleLauncher.java:333)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
    at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
    at org.gradle.initialization.DefaultGradleLauncher.constructTaskGraph(DefaultGradleLauncher.java:218)
    at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:155)
    at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:134)
    at org.gradle.internal.invocation.GradleBuildController$1.execute(GradleBuildController.java:58)
    at org.gradle.internal.invocation.GradleBuildController$1.execute(GradleBuildController.java:55)
    at org.gradle.internal.invocation.GradleBuildController$3.create(GradleBuildController.java:82)
    at org.gradle.internal.invocation.GradleBuildController$3.create(GradleBuildController.java:75)
    at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:183)
    at org.gradle.internal.work.StopShieldingWorkerLeaseService.withLocks(StopShieldingWorkerLeaseService.java:40)
    at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:75)
    at org.gradle.internal.invocation.GradleBuildController.run(GradleBuildController.java:55)
    at org.gradle.tooling.internal.provider.runner.BuildModelActionRunner.run(BuildModelActionRunner.java:54)
    at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
    at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
    at org.gradle.launcher.exec.BuildOutcomeReportingBuildActionRunner.run(BuildOutcomeReportingBuildActionRunner.java:58)
    at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
    at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.run(BuildCompletionNotifyingBuildActionRunner.java:39)
    at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:51)
    at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:45)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
    at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
    at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:45)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:49)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:46)
    at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:78)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:46)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:31)
    at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:42)
    at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:28)
    at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:78)
    at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:52)
    at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:59)
    at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:36)
    at org.gradle.tooling.internal.provider.SessionScopeBuildActionExecuter.execute(SessionScopeBuildActionExecuter.java:68)
    at org.gradle.tooling.internal.provider.SessionScopeBuildActionExecuter.execute(SessionScopeBuildActionExecuter.java:38)
    at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:37)
    at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:26)
    at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:43)
    at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:29)
    at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:60)
    at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:32)
    at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:55)
    at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:41)
    at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:48)
    at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:32)
    at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
    at org.gradle.util.Swapper.swap(Swapper.java:38)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:62)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:81)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
    at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:295)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
    at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
    at java.lang.Thread.run(Thread.java:748)
Caused by: org.gradle.api.GradleException: In project 'app' a resolved Google Play services library dependency depends on another at an exact version (e.g. "[2.3.2
,2.3.3]", but isn't being resolved to that version. Behavior exhibited by the library will be unknown.

Dependency failing: io.perfmark:perfmark-api:0.16.0 -> com.google.errorprone:error_prone_annotations@[2.3.2,2.3.3], but 
error_prone_annotations version was 2.3.2.

The following dependencies are project dependencies that are direct or have transitive dependencies that lead to the art
ifact with the issue.
-- Project 'app' depends onto io.grpc:grpc-api@{strictly 1.22.1}
-- Project 'app' depends onto io.grpc:[email protected]
-- Project 'app' depends onto io.perfmark:perfmark-api@{strictly 0.16.0}
-- Project 'app' depends onto io.grpc:[email protected]
-- Project 'app' depends onto io.grpc:grpc-stub@{strictly 1.22.1}
-- Project 'app' depends onto io.grpc:grpc-core@{strictly 1.22.1}
-- Project 'app' depends onto io.grpc:grpc-okhttp@{strictly 1.22.1}
-- Project 'app' depends onto io.grpc:grpc-protobuf-lite@{strictly 1.22.1}
-- Project 'app' depends onto io.grpc:[email protected]
-- Project 'app' depends onto com.google.errorprone:error_prone_annotations@{strictly 2.3.2}

For extended debugging info execute Gradle from the command line with ./gradlew --info :app:assembleDebug to see the dep
endency paths to the artifact. This error message came from the google-services Gradle plugin, report issues at https://
github.com/google/play-services-plugins and disable by adding "googleServices { disableVersionCheck = false }" to your b
uild.gradle file.
    at com.google.android.gms.dependencies.DependencyInspector.afterResolve(DependencyInspector.java:229)
    at sun.reflect.GeneratedMethodAccessor77.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
    at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
    at org.gradle.internal.event.DefaultListenerManager$ListenerDetails.dispatch(DefaultListenerManager.java:376)
    at org.gradle.internal.event.DefaultListenerManager$ListenerDetails.dispatch(DefaultListenerManager.java:358)
    at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:58)
    at org.gradle.internal.event.DefaultListenerManager$EventBroadcast$ListenerDispatch.dispatch(DefaultListenerManager.java:346)
    at org.gradle.internal.event.DefaultListenerManager$EventBroadcast$ListenerDispatch.dispatch(DefaultListenerManager.java:333)
    at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:42)
    at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:230)
    at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:149)
    at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:58)
    at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:324)
    at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:234)
    at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:140)
    at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:37)
    at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
    at com.sun.proxy.$Proxy26.afterResolve(Unknown Source)
    at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration$7.run(DefaultConfiguration.java:594)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
    at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
    at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.resolveGraphIfRequired(DefaultConfiguration.java:576)
    at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.access$600(DefaultConfiguration.java:138)
    at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration$6.run(DefaultConfiguration.java:556)
    at org.gradle.api.internal.project.DefaultProjectStateRegistry$SafeExclusiveLockImpl.withLock(DefaultProjectStateRegistry.java:244)
    at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.resolveExclusively(DefaultConfiguration.java:552)
    at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.resolveToStateOrLater(DefaultConfiguration.java:547)
    at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.resolveGraphForBuildDependenciesIfRequired(DefaultConfiguration.java:697)
    at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.access$3700(DefaultConfiguration.java:138)
    at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration$ConfigurationTaskDependency.visitDependencies(DefaultConfiguration.java:1656)
    at org.gradle.api.internal.tasks.CachingTaskDependencyResolveContext$TaskGraphImpl.getNodeValues(CachingTaskDependencyResolveContext.java:106)
    at org.gradle.internal.graph.CachingDirectedGraphWalker$GraphWithEmptyEdges.getNodeValues(CachingDirectedGraphWalker.java:211)
    at org.gradle.internal.graph.CachingDirectedGraphWalker.doSearch(CachingDirectedGraphWalker.java:121)
    at org.gradle.internal.graph.CachingDirectedGraphWalker.findValues(CachingDirectedGraphWalker.java:73)
    at org.gradle.api.internal.tasks.CachingTaskDependencyResolveContext.getDependencies(CachingTaskDependencyResolveContext.java:66)
    ... 109 more


Most helpful comment

Now I make a dirty hack, seems to work better. I don't know how a clean workaround would be yet.

    // gRPC
    implementation ("io.grpc:grpc-okhttp:$grpc_version") {
        exclude group: 'io.perfmark', module: 'perfmark-api'
    }
    implementation ("io.grpc:grpc-protobuf-lite:$grpc_version") {
        exclude group: 'io.perfmark', module: 'perfmark-api'
    }
    implementation ("io.grpc:grpc-stub:$grpc_version") {
        exclude group: 'io.perfmark', module: 'perfmark-api'
    }
    implementation ('io.perfmark:perfmark-api:0.16.0') {
        exclude group: 'com.google.errorprone', module: 'error_prone_annotations'
    }

Screenshot from 2019-10-01 12-17-39

All 12 comments

We build your repo https://github.com/benz93chung/GrpcMvvm locally (not with Firebase console) and it was successful.

Can you provide any reference to how to do the following?

2. Set up a Firebase project, add Android app, and follow instructions 
   (down the line the google-services.json and dependencies at the gradle
   files are being added)
3. Sync

Now I figured out how to add a Firebase project. I did reproduce the issue. Then I try to add

implementation 'com.google.errorprone:error_prone_annotations:2.3.2'

with the explicit version. Then sync. It seems to work now.
EDIT: this does not work. See other workarounds in later comments.

Screenshot from 2019-09-30 11-25-42

Now I figured out how to add a Firebase project. I did reproduce the issue. Then I try to add

implementation 'com.google.errorprone:error_prone_annotations:2.3.2'

with the explicit version. Then sync. It seems to work now.

Screenshot from 2019-09-30 11-25-42

Thanks for attending to the issue. However I am still having trouble with syncing even after explicitly adding errorprone as dependency. Have you applied the google services plugin at the end of the gradle file though?

Screenshot 2019-10-01 at 3 16 18 PM

To provide a bit more info if it ever helps, I am using JDK 11.0.4 in my environment.

In the meantime, I am finding out if it's just me since it worked for you.

Have you applied the google services plugin at the end of the gradle file though?

Yes, I added all the lines to app/gradle.build file as instructed while adding the app to firebase project. However, I found that my workaround is not reliable, most time it still fails. I'll take more look into the issue.

Now I make a dirty hack, seems to work better. I don't know how a clean workaround would be yet.

    // gRPC
    implementation ("io.grpc:grpc-okhttp:$grpc_version") {
        exclude group: 'io.perfmark', module: 'perfmark-api'
    }
    implementation ("io.grpc:grpc-protobuf-lite:$grpc_version") {
        exclude group: 'io.perfmark', module: 'perfmark-api'
    }
    implementation ("io.grpc:grpc-stub:$grpc_version") {
        exclude group: 'io.perfmark', module: 'perfmark-api'
    }
    implementation ('io.perfmark:perfmark-api:0.16.0') {
        exclude group: 'com.google.errorprone', module: 'error_prone_annotations'
    }

Screenshot from 2019-10-01 12-17-39

Now I make a dirty hack, seems to work better. I don't know how a clean workaround would be yet.

    // gRPC
    implementation ("io.grpc:grpc-okhttp:$grpc_version") {
        exclude group: 'io.perfmark', module: 'perfmark-api'
    }
    implementation ("io.grpc:grpc-protobuf-lite:$grpc_version") {
        exclude group: 'io.perfmark', module: 'perfmark-api'
    }
    implementation ("io.grpc:grpc-stub:$grpc_version") {
        exclude group: 'io.perfmark', module: 'perfmark-api'
    }
    implementation ('io.perfmark:perfmark-api:0.16.0') {
        exclude group: 'com.google.errorprone', module: 'error_prone_annotations'
    }

Screenshot from 2019-10-01 12-17-39

Thank you once again. For now, the dirty hack works.

Screenshot 2019-10-03 at 2 17 54 PM (2)

Perfmark just had new release 0.19.0 which fixed its dependency range issue. Now we can have a much simpler workaround:

// Explicitly depend on perfmark 0.19.0
implementation "io.perfmark:perfmark-api:0.19.0"

The 1.24.1 release comments suggest that this should've been in 1.24.1, but the grpc-core POM shows 0.17.0

Thanks @bubenheimer for pointing it out.

@creamsoup , the 1.24.1 release should mention the known issue and the workaround, instead of Dependencies Bump perfmark to 0.19.0

@dapengzhang0, yes i'll add that note. I thought it was back-ported since the 1.24.1 was released later than the other 2 patches.

  • What went wrong:
    Could not determine the dependencies of task ':app:compilePlaystoreQaAmStageCBSJavaWithJavac'.

    In project 'app' a resolved Google Play services library dependency depends on another at an exact version (e.g. "[1.25.
    0]", but isn't being resolved to that version. Behavior exhibited by the library will be unknown.

    Dependency failing: io.grpc:grpc-auth:1.25.0 -> io.grpc:grpc-api@[1.25.0], but grpc-api version was 1.26.0.

    The following dependencies are project dependencies that are direct or have transitive dependencies that lead to the art
    ifact with the issue.
    -- Project 'app' depends onto io.grpc:grpc-core@{strictly 1.26.0}
    -- Project 'app' depends onto io.grpc:[email protected]
    -- Project 'app' depends onto com.google.cloud:[email protected]
    -- Project 'app' depends onto io.grpc:grpc-alts@{strictly 1.25.0}
    -- Project 'app' depends onto io.grpc:grpc-api@{strictly 1.26.0}
    -- Project 'app' depends onto io.grpc:grpc-okhttp@{strictly 1.26.0}
    -- Project 'app' depends onto io.grpc:grpc-stub@{strictly 1.26.0}
    -- Project 'app' depends onto io.grpc:grpc-grpclb@{strictly 1.25.0}
    -- Project 'app' depends onto com.google.cloud:google-cloud-dialogflow@{strictly 0.120.0}
    -- Project 'app' depends onto io.grpc:grpc-protobuf-lite@{strictly 1.26.0}
    -- Project 'app' depends onto com.google.api:gax-grpc@{strictly 1.52.0}
    -- Project 'app' depends onto io.grpc:grpc-auth@{strictly 1.25.0}
    -- Project 'app' depends onto io.grpc:grpc-protobuf@{strictly 1.26.0}

    For extended debugging info execute Gradle from the command line with ./gradlew --info :app:assembleDebug to see the dep
    endency paths to the artifact. This error message came from the google-services Gradle plugin, report issues at https://
    github.com/google/play-services-plugins and disable by adding "googleServices { disableVersionCheck = false }" to your b
    uild.gradle file.

  • 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

I found solution
just update in apps build.gradle

// Java V2
    implementation 'com.google.cloud:google-cloud-dialogflow:0.120.0'
    // for Remote Procedure Call to avoid "No functional channel service provider found" error while //creating SessionsClient
    implementation 'io.grpc:grpc-okhttp:1.28.0'

and in root build.gradle
update playservice plugin version
classpath 'com.google.gms:google-services:4.3.3'

Was this page helpful?
0 / 5 - 0 ratings

Related issues

lbensaad picture lbensaad  路  7Comments

rmichela picture rmichela  路  3Comments

njovy picture njovy  路  5Comments

zhaoweizhen picture zhaoweizhen  路  8Comments

nanil4568 picture nanil4568  路  5Comments