自动将生成的 proto 文件包含到 Xcode 项目中

问题描述

我们的 iOS 应用目前使用 Google protobuffer gRPC 作为我们的 API 层来在应用和后端之间进行通信。因此,我们的后端目录中有这些 .proto 文件,这些文件将被 gRPC-Swift-Plugins 转换为 .grpc.swift.pb.swift 文件,然后由应用程序使用。

这个没问题,但是转换的过程很繁琐,我们想自动化整个过程。

以下是我们的做法:
  1. 删除之前复制的目录,并通过shell脚本将所有.proto文件从后端(.proto文件由后端开发人员维护)复制到名为“Protos”的App目录中
  2. 我们已经设置了构建规则并在编译源中包含.proto文件。按照an answer here on SO
  3. 中的步骤操作

Xcode 中当前设置的屏幕截图 Build Rules

enter image description here

  1. 每当我们构建项目时,都会生成 .pb.swift.grpc.swift 并放入“Protos”文件夹下名为“generated”的目录中。

问题如下:

  1. 如果后端在源目录中添加了新的 .proto 文件,我的脚本只会将文件复制到 Protos 目录中,但不会将新闻文件包含在编译源列表中。
  2. 与第一个问题类似,我们需要在 Xcode 中手动设置编译源,这意味着如果有新开发人员加入我们的团队,他/她也需要再次进行相同的设置。
  3. 我们有时需要在编码时参考 .grpc.swift.ph.swift 文件。但是如果我们将这些文件添加到 Xcode 中并再次构建项目,Xcode 会抱怨这些生成文件在那里(对不起,我们正在处理一个私有仓库,所以项目名称文件名被替换了):

多个命令产生'${user_path}/${proto_name}.pb.o':

  1. 目标“${my_project_name}”(项目“${my_project_name}”)具有 Swift 源文件的编译命令
  2. 目标“${my_project_name}”(项目“${my_project_name}”)具有 Swift 源文件的编译命令

非常感谢任何答案或意见和建议!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)