Cloud firestore with gRPC构建错误

问题描述:

我正在开发一个android应用程序,它必须使用gRPC和Firestore。但是,当我从'io.grpc'组依赖项(例如io.grpc:grpc-okhttp:1.7.0)和firestore依赖项(com.google.firebase:firebase-firestore:11.4.2)中添加了一个模块构建gradle配置,我得到一个构建错误“无法合并dex”。与“堆栈跟踪”构建选项后,我看到的问题是Cloud firestore with gRPC构建错误

Multiple dex files define Lio/grpc/internal/OobChannel$5; 

如果公司的FireStore使用GRPC核心模块它可能发生,但目前还没有一个树相依相似,这是我得到了使用[androidDependencies] gradle这个任务。我试图排除这样的io.grpc:

implementation ('com.google.firebase:firebase-firestore:11.4.2') { 
    exclude group: 'io.grpc' 
} 

但有同样的错误。然后我想,如果我把grpc模块依赖关系中的所有'io.grpc。'传递依赖关系排除在外,为内部类添加grpc-core。就这样,我写丑的依赖只是为了测试

implementation 'com.google.firebase:firebase-firestore:11.4.2' 
implementation('io.grpc:grpc-okhttp:1.7.0') { 
    exclude group: 'io.grpc' 
} 
implementation('io.grpc:grpc-protobuf-lite:1.7.0') { 
    exclude group: 'io.grpc' 
} 
implementation('io.grpc:grpc-stub:1.7.0') { 
    exclude group: 'io.grpc' 
} 
implementation 'io.grpc:grpc-core:1.7.0' 

我很惊讶,当它编译成功,但推出的应用后,它用了java.lang.RuntimeException坠毁:在公司的FireStore(内部错误0.6.6-dev的)

Caused by: java.lang.NoSuchMethodError: No static method zzcyc()Lio/grpc/ManagedChannelProvider; in class Lio/grpc/ManagedChannelProvider; or its super classes (declaration of 'io.grpc.ManagedChannelProvider' appears in /data/app/com.zipr.test-2/split_lib_dependencies_apk.apk) 

我使用gradle 3.0.0-rc1启用multidex支持。我删除.gradle,建立目录,清理重建项目,但我仍然有生成错误。我能做些什么来解决这个问题?

由于各种因素限制了我们在Google上构建Android SDK的方式,Firestore在其内部编制了gRPC副本。不幸的是,这是漏洞,你遇到了后果:11.4.2 Firestore SDK与任何外部gRPC不兼容: - (。

这实质上是我们的Firestore Android SDK的首要问题,我很抱歉已经遇到它

+0

感谢您的快速回答,希望这个问题将得到解决! –