ios - 自动化将生成的 proto 文件包含到 Xcode 项目中的过程
问题描述
我们的 iOS 应用程序目前使用 Google protobuffer gRPC作为我们的 API 层来在应用程序和后端之间进行通信。所以我们.proto
在后端目录中有这些文件,这些文件将由 gRPC-Swift-Plugins 转换为.grpc.swift
文件.pb.swift
,然后由应用程序使用。
这工作正常,但转换的过程非常繁琐,我们希望将整个过程自动化。
以下是我们的做法:
- 删除先前复制的目录,并通过 shell 脚本将所有
.proto
文件从后端(.proto
文件由后端开发人员维护)复制到名为“Protos”的 App 目录 - 我们已经在Compile Sources中设置了构建规则并包含
.proto
文件。按照SO 上的答案中的步骤进行操作
- 每当我们构建项目时,都会
.pb.swift
生成.grpc.swift
并放入“Protos”文件夹下名为“generated”的目录中。
以下是问题:
- 如果后端将新
.proto
文件添加到源目录中,我的脚本只会将文件复制到 Protos 目录中,但不会将新闻文件包含在Compile Sources列表中。 - 与第一个问题类似,我们需要在 Xcode 中手动设置编译源,这意味着如果新开发人员加入我们的团队,他/她也需要再次进行相同的设置。
- 我们有时需要在编码时参考
.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 源文件的编译命令
非常感谢任何答案或意见和建议!
解决方案
有趣的是,如果我使用 $DERIVED_FILE_DIR,我在 Swift 中没有这些问题
protoc "$INPUT_FILE_NAME" --swift_out="$DERIVED_FILE_DIR" --proto_path="Your/proto/path"
我不使用该插件,因为我已将插件安装在我的/usr/local/bin
但是当我们将输出用于 cpp 文件时,我确实遇到了这些问题。
推荐阅读
- python - 交互式 QDialog 以显示 Matplotlib 图
- excel - 通过整数调用对象
- css - 带有文本区域的联系表格填充剩余内容
- python - 处理父字段 DRF 后填写相关表的最佳方法是什么
- python-3.x - Selenium 仅找到一小部分 href 链接
- asp.net-mvc - 在一个视图中提交多个选项卡 ASP.NET MVC
- vue.js - 从源代码构建的 CK Editor 5 + Vue JS + 在本地使用组件 = 重复
- python - 我在异常处理中有一个不同的异常?
- reactjs - SyntaxError: Unexpected identifier import bodyParser from 'body-parser'; … 在 REACT JS 应用程序中
- python - 我是否在构建正确的 LSTM 模型?