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

Posted

技术标签:

【中文标题】为 iOS 应用程序中的目标依赖项指定不同的配置文件【英文标题】:Specify different provisioning profiles for target dependencies in iOS app 【发布时间】:2017-11-20 17:57:12 【问题描述】:

我目前正在尝试第一次使用 xcconfig 文件,以便更轻松地在我的项目中使用配置文件。我正在构建 Development.xcconfigBeta.xcconfigAppStore.xcconfig

上下文:

我需要能够从命令行构建我的应用程序。

我的应用还有一个 Today 扩展,它具有不同的应用 ID 和配置文件。所以,我需要找到一种方法来指定这两个配置文件。

xcconfig 文件允许在项目中设置全局配置文件,这很棒。

但是,它们不允许在目标依赖项(即扩展)中设置配置文件。

我想避免在扩展程序的构建设置中指向一个特殊标志(例如 $(MY_EXTENSION_PROVISIONING_PROFILE)),因为任何时候有人编辑扩展程序的配置文件时都会覆盖该标志。 (所以,here 的解决方案是不够的)

如何在 xcconfig 文件中包含所有这些设置?如果这不可能,那么在项目之外指定这些配置文件的替代解决方案是什么?

【问题讨论】:

【参考方案1】:

您绝对可以为带有 .xcconfig 文件的应用扩展设置配置文件或任何其他构建设置。您只需为您的应用扩展创建单独的 .xcconfig 文件。

为您的应用扩展创建单独的 .xcconfig 文件,为您的开发、Beta 和 App Store 配置分别创建一个文件。在那里定义扩展应用 ID 和配置文件:

PROVISIONING_PROFILE_SPECIFIER = your profile specifier

PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.TodayExtension

PRODUCT_NAME = Today Extension

然后,在您的项目设置中,设置与每个方案对应的 .xcconfig 文件。此处显示的示例是我的应用程序 - DevAppNew 是应用程序目标,而 NotificationService 是应用程序扩展目标。同样,您的 Today 扩展程序也会有一个单独的目标:

在命令行上构建时,指定您要构建的方案,它将使用您配置的 .xcconfig 文件:

xcodebuild -workspace YourApp.xcworkspace -scheme Testing

【讨论】:

如果你和我一样不知道什么是令人震惊的,有一篇关于如何设置的文章:appcoda.com/xcconfig-guide

以上是关于为 iOS 应用程序中的目标依赖项指定不同的配置文件的主要内容,如果未能解决你的问题,请参考以下文章

Cargo使用文档-指定依赖项

在方案中设置构建变量而不是目标

XCode 5 依赖项警告 - 混淆 iOS 部署目标和架构

Xcode:如何从特定配置的构建阶段删除目标依赖项

在现代CMake项目中存档静态依赖项

不同构建配置文件的不同依赖项