`xcconfig` 文件中的条件用户定义变量

Posted

技术标签:

【中文标题】`xcconfig` 文件中的条件用户定义变量【英文标题】:Conditional user defined variables in `xcconfig` file 【发布时间】:2016-10-21 08:04:58 【问题描述】:

使用在 macOS Sierra 上运行的 Xcode 8 我试图在 xcconfig 文件中声明一个条件变量。

我的项目使用fastlane match,所以我主要想使用fastlane gym 来归档我的应用程序,但我也希望能够手动执行归档(测试目的)。

我想要实现的是这样的:

_ARCHIVING_WITH_CLI = YES // Actually want to check for some fastlane ENV variabel here, not sure how...

#ifdef _ARCHIVING_WITH_CLI
    _PROVISIONING_PROFILE_APP_STORE = sigh_com.mycomp.app_appstore
#else
    _PROVISIONING_PROFILE_APP_STORE = match AppStore com.mycomp.app
#endif

PROVISIONING_PROFILE_SPECIFIER[config=Release] = $(_PROVISIONING_PROFILE_APP_STORE)

但显然这是错误的语法。我已经尝试寻找文档,但没有真正找到。

    你能帮我解决xcconfig 语法吗? 你能帮我吗 检查存档是手动启动还是通过 fastlane gym (xcodebuildCLI)

【问题讨论】:

【参考方案1】:

这是您要查找的文档:https://docs.fastlane.tools/actions/

您还可以运行gym help 并查看支持的参数。 xcconfig 就像您的 Fastfile 中的任何其他参数一样:

gym 
  ...,
  xcconfig: "STRING",
  ...

我不知道您为什么希望在设置 matchgym 后能够手动存档。您应该能够在您的机器上运行相同的 Fastfile,match 将负责安装您的证书,您将完成同样的事情。

见https://codesigning.guide/

【讨论】:

抱歉回复太晚了。我想你误解了我的问题。我不是在问如何使用 fastlane 中的 xcconfig。其实我不想那样做。我已将我的 xcconfig 设置为项目中的配置。我在问如何在 xcconfig 中声明自定义 bool 变量并稍后在文件中使用该 bool。【参考方案2】:

您可以根据 sdk、架构或配置有条件地设置变量。格式如下:

<FIELD>[<condition_name_1>=<condition_value_1>][<condition_name_2>=<condition_value_2>].. = <Value>

其中condition_name_* 可以是sdk/arch/config,有关可能值的详细信息,请参阅official documentation。

对于您的场景,您似乎可以取消应用基于 sdk 的条件,或创建自定义配置:一种用于 Fastlane,另一种用于 cli/manual 使用。

【讨论】:

以上是关于`xcconfig` 文件中的条件用户定义变量的主要内容,如果未能解决你的问题,请参考以下文章

xcodebuild:在使用条件集错误覆盖参数时实现对宏的 XCBuild 支持

iOS-xcconfig环境变量那些事(配置环境的配置)

目标 ... 覆盖在 `Pods/Pods.xcconfig 中定义的 `OTHER_LDFLAGS` 构建设置

XCConfig 在 Xcode 重新启动之前不会刷新

如何区分 xcconfig 文件中的“Ad Hoc”和“App Store”代码签名身份?

为 iOS 应用程序中的目标依赖项指定不同的配置文件