如何在project.pbxproj文件中使用环境变量?

4
我有一个构建并通过 Microsoft Appcenter 分发的 React Native 应用程序。对于 iOS 端,我有一个发布变体,即实际生产变体,还有一个暂存变体。我想要达成的 Git 工作流类似于以下这样: 1. 从主分支或暂存分支创建功能分支 - > 2. 推送 OTA 更新到暂存变体 - > 3. 合并暂存变体到主分支(这是关键部分)
我希望能够将暂存合并到主分支,而无需每次将暂存拉入主分支时手动设置 defaultConfigurationName,或将主分支的功能分支推送到暂存。我想要一个动态值:主分支始终为“release”,暂存始终为“staging”。
问题:当将暂存分支合并到主分支(生产环境)时,project.pbxproj 中的 defaultConfigurationName 会更改由 Microsoft Appcenter 构建的变体,该变体从发布变体(生产环境)更改为暂存变体。

enter image description here

假设我有一个名为“ENVIRONMENT”的环境变量,其值为“release”和“staging”,对应于“master”和“staging”分支。当将staging合并到master时,我想自动化管理iOS构建配置,并且不必每次手动将defaultConfigurationName重置为“release”。如何将env变量的值设置为project.pbxproj文件中“defaultConfigurationName”的值?
注意:我不需要设置环境或环境变量的帮助。我也不想创建额外的目标。

你能再解释一下之前你是如何定义环境变量的吗? - Itachi
@itachi 它是在 Appcenter 构建过程中运行的脚本中定义的。像其他环境变量一样访问。但我不知道如何在 project.pbxproj 文件中原生地使用环境变量。 - Jim
建议将现有的“Release”项目配置复制到您喜欢的发布渠道,并为它们分别定义不同的预处理器宏,并在一个代码库中使用#if #elif #end - Itachi
2个回答

0
我遇到了这个问题,并发现您可以更新在ios/app/app/info.plist中找到的info.plist文件,以包含您的环境变量。
例如
<key>CFBundleVersion</key>
<string>$(CAPACITOR_BUILD_NUMBER)</string>

-1
请查看this博客文章,它展示了如何为Android和iOS设置多个环境。

问题不在于如何设置环境变量,我已经设置好了。问题是如何在project.pbxproj文件中使用环境变量。 - Jim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接