【发布时间】:2021-07-02 02:33:33
【问题描述】:
我们的 iOS 应用目前使用 Google protobuffer gRPC 作为我们的 API 层来在应用和后端之间进行通信。所以我们的后端目录中有这些.proto 文件,它们将被gRPC-Swift-Plugins 转换为.grpc.swift 和.pb.swift 文件,然后由应用程序使用。
这行得通,但是转换的过程非常繁琐,我们希望将整个过程自动化。
以下是我们的做法:
- 删除之前复制的目录,并通过 shell 脚本将所有
.proto文件从后端(.proto文件由后端开发人员维护)复制到名为“Protos”的 App 目录中 - 我们已经设置了构建规则并将
.proto文件包含在Compile Sources中。按照an answer here on SO 的步骤
- 每当我们构建项目时,都会生成
.pb.swift和.grpc.swift,并将其放入“Protos”文件夹下名为“generated”的目录中。
问题如下:
- 如果后端将新的
.proto文件添加到源目录中,我的脚本只会将文件复制到 Protos 目录中,而不会将新闻文件包含在 Compile Sources 列表中。 - 与第一个问题类似,我们需要在 Xcode 中手动设置 Compile Sources,这意味着如果新开发人员加入我们的团队,他/她也需要再次进行相同的设置。
- 编码时有时需要参考
.grpc.swift和.ph.swift文件。但是如果我们将这些文件添加到 Xcode 中并再次构建项目,Xcode 会抱怨这些生成的文件在那里(对不起,我们正在处理私有 repo,因此项目名称和文件名被替换):
多个命令产生'${user_path}/${proto_name}.pb.o':
- 目标“${my_project_name}”(项目“${my_project_name}”)具有 Swift 源文件的编译命令
- 目标“${my_project_name}”(项目“${my_project_name}”)具有 Swift 源文件的编译命令
非常感谢任何答案或 cmets 和建议!
【问题讨论】:
标签: ios swift xcode protocol-buffers grpc-swift