ios - 从不同的目标获取 Bundle ID

标签 ios objective-c xcode ios-app-extension xcode-build-settings

在我的 Xcode 项目中,我有 4 种不同的方案(prod、dev、staging、staging2),它们会更改安装到手机上的应用程序的包标识符。这样我就可以并排安装所有 4 个版本,类似于 this technique .

现在我正在为 iOS 8 构建 Today Extension。它是一个需要自己的包标识符的新 Target。

Extension 的 Bundle Identifier 必须以 Parent App 的 Bundle Identifier 为前缀,否则会抛出警告:

error: Embedded binary's bundle identifier is not prefixed with the parent app's bundle identifier.

    Embedded Binary Bundle Identifier:  com.company.app.TodayExtension
    Parent App Bundle Identifier:       com.company.app.staging

在这种情况下,嵌入式二进制包标识符必须是 com.company.app.staging.TodayExtension

有没有一种方法可以配置我的 Today Extension 目标,通过首先查看父目标的包标识符来设置它的包标识符?也许通过自定义运行脚本构建阶段?

最佳答案

目标的build设置不适用于其他目标。但是,项目的build设置可用。

因此,您可以在项目中添加用户定义的build设置并将其命名为 PARENT_APP_BUNDLE_IDENTIFIER 并为所有方案设置正确的包 ID。

然后在应用扩展目标的信息选项卡中将包 ID 设置为

$(PARENT_APP_BUNDLE_IDENTIFIER).$(PRODUCT_NAME:rfc1034identifier)

它对我来说非常好。

关于ios - 从不同的目标获取 Bundle ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25794613/

相关文章:

ios - 从单个解析应用程序解析推送通知到多个 ios 应用程序

ios - 使用 Storyboard将信息从一个 View Controller 传递到下一个 View Controller

iphone - 操纵 nsmutabledata

objective-c - 这个 if 语句是正确的还是多余的?

xcode - 如何折叠 Xcode 问题导航器中的所有问题

xcode - 如何更改 Storyboard的颜色以查看白色文本?

ios - UIView 不响应触摸

iphone - 透明的 ViewController 看到下面的父级?

python - 如何让我的 objective-c 客户端与我的 python 服务器通信?

iphone - 添加了在 Xcode 中不起作用的自定义字体