如何将扩展的捆绑 ID 作为环境变量传递

Posted

技术标签:

【中文标题】如何将扩展的捆绑 ID 作为环境变量传递【英文标题】:How to pass bundle id of extension as environment variable 【发布时间】:2016-02-05 17:46:06 【问题描述】:

我需要通过“xcodebuild”在 Today Extension 中构建一个 Xcode 项目。 bundle 的主要目标是 com.myapp,而扩展的 bundle id 是 com.myapp.todayextension。 我想将两个包 ID 作为 xcodebuild 的参数传递:我试图用自定义环境变量(例如 $MAIN_TARGET_BUNDLEID 和 $EXTENSION_BUNDLEID)替换 xcode 项目中的包 ID,但 xcodebuild 失败。您能否帮助我了解 xcodebuild 命令的正确语法?谢谢。

【问题讨论】:

【参考方案1】:

根据documentation,这称为PRODUCT_BUNDLE_IDENTIFIER

【讨论】:

【参考方案2】:

迟到总比没有好;我们不能直接在General 选项卡中使用环境变量,您需要进入Build Settings 选项卡,然后将Product Bundle Identifier 设置为您的环境变量,例如$(PRODUCT_NAME)

另一种方法见下文。

如何加载父项目设置的前缀?

    创建一个.xcconfig 文件(内容如示例)。 在项目设置的Info 选项卡(不是目标的Info 选项卡)中设置.xcconfig 文件。 在目标的Build Settings 选项卡中,确保PRODUCT_BUNDLE_IDENTIFIER 不是粗体(单击它并按delete)。

Podfile 用户也应该看到:How to make Xcode use multiple xcconfig files?

示例

我的extension.xcconfig 文件(位于MyApp/MyLib/MyExtension 目录中)类似于:

// Below loads `MyApp/config/mylib.xcconfig` file.
#include "../../config/mylib.xcconfig"

PRODUCT_BUNDLE_IDENTIFIER = $(MYLIB_BUNDLE_PREFIX).$(PRODUCT_NAME)

注意

    你想使用一些环境作为前缀,但上面我使用PRODUCT_NAME作为后缀(你可以随意编辑)。 mylib.xcconfig 文件设置为MYLIB_BUNDLE_PREFIX,并且位于我的MyLib.xcodeproj 文件目录之外(在父项目的config 目录中也是如此,我在MyLib 的README.md 中描述了用户应该在那里创建它)。 所以,除了展示我的#include 方法之外,我尝试介绍环境变量的使用。

【讨论】:

以上是关于如何将扩展的捆绑 ID 作为环境变量传递的主要内容,如果未能解决你的问题,请参考以下文章

如何在 kubeflow 管道中传递环境变量?

如何在 ECS 任务中将 rds.DatabaseCluster 机密作为环境变量传递

如何在传递 ShellCheck 时通过环境变量将 glob 传递给 shell 脚本

CMAKE 使用环境变量而不将它们作为命令行参数传递?

如何将环境变量传递给pytest

如何将环境变量传递给由 systemd 启动的服务