我的统一游戏是使用一个Android库。他们通过JNI桥发送字符串进行通信。现在我想通过那座桥发送原型信息。我已经在联合和我的Android库项目中把Google protobuf作为一个依赖项。不过,我不知道该怎么做。
我所做的
protoc
,编译统一(c#)和安卓(c#)的.proto文件在Android / Java部分中,所有的东西似乎都编译得很好。然而,在联合中,我在添加编译后的.proto文件( ==自动生成的文件)时遇到了大量编译错误。
在这里,作为占位符,第一个编译错误:
Assets\MyApp\ProtobufExample\Detection.cs(62,13): error CS0234: The type or namespace name 'IBufferMessage' does not exist in the namespace 'Google.Protobuf' (are you missing an assembly reference?)
在我看来,我的GoogleProtobuf依赖关系与编译器并不是最新的,但这只是猜测而已。
更新
这是一个依赖问题。很明显,我不能使用最新的protobuf编译器(v3.20),因为它添加了更多的依赖项,这些依赖在Unity库中是未知的。正如在protobuf问题中指出的那样,旧版本(v3.0)可以做到这一点。
现在我不再有任何编译问题了。但是,我遇到了运行时问题。JNI在抱怨
System.Exception: JNI:类型'My.Proto.Example.DetectionType‘(obj = My.Proto.Example.DetectionType)相等的未知签名
对于Java和C#来说,原版可能仍然是一个不同的问题。在gradle文件中,我有"protoc:3.18.0“,它确实可能与我需要的统一版本3.0不兼容。
降低Java的级别会导致分级编译错误Unknown generator option: lite
。
如果有人这样做过,请推荐一个同时适用于Uniy和Java的版本号。
发布于 2022-04-08 10:29:40
我也遇到了这个问题,我通过统一升级插件版本(升级到2.46)来解决这个问题。这允许我使用protobuf (3.20)和grpctool (2.45)的最新版本。插件由官方grpc提供,您可以下载它这里。
https://stackoverflow.com/questions/71755903
复制相似问题