gpt4 book ai didi

android - 从 Android SyncAdapter 调用服务方法时 gRPC 失败

转载 作者:行者123 更新时间:2023-12-01 12:53:59 25 4
gpt4 key购买 nike

我花了一些时间才发现只有当我尝试从 SyncAdapter 使用 gRPC 客户端时才会导致以下错误:

No functional channel service provider found. Try adding a dependency on the grpc-okhttp or grpc-netty artifact

设置和官方教程中的完全一样 Transferring Data Using Sync Adapters .

我使用与 example 相同的设置生成了 gRPC 代码来自 grpc-java。 compile 'com.squareup.okhttp:okhttp:2.2.0'示例中的依赖关系不是必需的,因为 compile 'io.grpc:grpc-okhttp:0.9.0'被修改为自包含。

当从主 Activity 调用 gRPC 服务方法时,它可以正常工作。

我怀疑 grpc-okhttp必须以某种方式初始化,但不知道如何初始化。

最佳答案

我决定阅读 gRPC 的代码。我用来创建 channel 的代码是:

mChannel = ManagedChannelBuilder.forAddress(mHost, mPort)
.usePlaintext(true).build();

通用 ManagedChannelBuilder 类的工作方式是动态加载所有扩展 ManageChannelBoulder 的类。并选择具有最高优先级的那个。然后选择的类被记住在静态变量中。

似乎在 SyncAdapter 的通话中okhttp 的适当构建器不可用。我已经通过硬编码选择的构建器来修复它:
mChannel = OkHttpChannelBuilder.forAddress(mHost, mPort)
.usePlaintext(true).build();

我希望拯救某人的夜晚。

关于android - 从 Android SyncAdapter 调用服务方法时 gRPC 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34346377/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com