Xcode:将包 ID 作为环境变量传递给扩展

问题描述 投票:0回答:2

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

xcodebuild today-extension bundle-identifier
2个回答
1
投票

迟到总比不到好;我们不能直接在

General
选项卡中使用环境变量,您需要进入
Build Settings
选项卡,然后将
Product Bundle Identifier
设置为您的环境变量,例如
$(PRODUCT_NAME)

另一种方法见下文。

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

  1. 创建一个
    .xcconfig
    文件(内容如示例)。
  2. 在项目设置的
    .xcconfig
    选项卡(不是目标的
    Info
    选项卡)中设置
    Info
    文件。
  3. 在目标的
    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)

注意

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

0
投票

这称为

PRODUCT_BUNDLE_IDENTIFIER
,根据 文档

© www.soinside.com 2019 - 2024. All rights reserved.