使用 protobuf 导入(即 google/protobuf/timestamp.proto)和 wire

Using protobuf imports (i.e. google/protobuf/timestamp.proto) with wire

我正在尝试使用广场的 Wire 生成文件。我可以 运行 他们的样本都很好,但是一旦我添加 import "google/protobuf/timestamp.proto"; 到他们的 .proto 文件 为了检查 wire 如何处理时间戳,编译器打破了这个例外:

Exception in thread "main" java.io.FileNotFoundException: Failed to locate google/protobuf/timestamp.proto in [src/main/proto]

我的路径中有协议($PATH=...usr/local/binprotoc 位于其中。timestamp.proto 位于 /usr/local/include/google/protobuf 下)。我希望 wire 编译器使用我系统中的协议,因此能够使用它的包含。

尝试 运行ning wire with gradle plugin 并使用预编译的 jar 得到相同的结果。

更新: 还尝试在 android studio 项目中使用 gradle 插件达到相同的程度。

* What went wrong:
Execution failed for task ':app:generateProtos'.
> unable to resolve 1 imports:
    google/protobuf/timestamp.proto
  searching 0 proto paths:

好的,经过一番搜索和试验,结果是:

1) 电线 doesn't support proto3 syntax(尚未)

2)时间戳是用proto3语法写的,所以wire也不支持。

所以答案是 - 在实现 proto3 支持之前,您不能导入 timestamp.proto 并使用它生成 类。

Wire 现在支持 Proto3 和新类型,包括 Timestamp。 您可以在此处查看实施差异:https://square.github.io/wire/wire_vs_protoc/