如何将扩展的捆绑 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 作为环境变量传递的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ECS 任务中将 rds.DatabaseCluster 机密作为环境变量传递