首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用protobuf实现JNI与Unity之间的通信

使用protobuf实现JNI与Unity之间的通信
EN

Stack Overflow用户
提问于 2022-04-05 17:20:15
回答 1查看 221关注 0票数 0

我的统一游戏是使用一个Android库。他们通过JNI桥发送字符串进行通信。现在我想通过那座桥发送原型信息。我已经在联合和我的Android库项目中把Google protobuf作为一个依赖项。不过,我不知道该怎么做。

我所做的

  • 创建一个.proto文件?
  • 下载protoc,编译统一(c#)和安卓(c#)的.proto文件
  • 将编译的文件添加到回复项目中。

在Android / Java部分中,所有的东西似乎都编译得很好。然而,在联合中,我在添加编译后的.proto文件( ==自动生成的文件)时遇到了大量编译错误。

在这里,作为占位符,第一个编译错误:

代码语言:javascript
运行
复制
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的版本号。

EN

回答 1

Stack Overflow用户

发布于 2022-04-08 10:29:40

我也遇到了这个问题,我通过统一升级插件版本(升级到2.46)来解决这个问题。这允许我使用protobuf (3.20)和grpctool (2.45)的最新版本。插件由官方grpc提供,您可以下载它这里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71755903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档