具有多个项目的工作区中的Xcode构建配置

斯蒂芬·阿兰巴希(Stefan Arambasich)

使用Xcode 7.2(7C68),OS X 10.11.2(15C50)

tl; dr在同一个Xcode工作区中有多个项目,为什么我对构建配置的用户定义的构建设置似乎不起作用?我在方案中正确设置了它们,但是在模拟器上运行时,这些值是正确的。在设备上运行时,值错误。

你好。我正在尝试利用Xcode构建配置(.xcconfig文件)根据环境自定义应用程序的行为。这样,我们便可以根据方案的构建配置自动在集成URL和生产URL之间切换。但是,我很难使它正常工作。我认为可能是我的工作空间布局怪异。这是布局/结构:

  • Xcode工作区
    • iOS应用项目(2个目标:应用,测试)
    • 可可触控框架项目(两个目标:框架,测试)

现在,对于每个这些项目,我都有以下.xcconfig文件

  • Debug.xcconfig
  • Testing.xcconfig
  • Release.xcconfig

此外,以下方案(针对每个项目一对一映射到其各自的配置):

  • 除错
  • 测试中
  • 释放

对于该框架,这些文件包含我们要基于调试或测试或发布自定义的信息(例如URL,API令牌/密钥等)。现在,应用程序和框架都各自拥有这些文件的副本。这是因为Xcode在处理依赖项或多个项目时会隐式尝试在这种情况下使用同名的配置。我猜问题的一部分是我不知道如何明确告诉Xcode使用X配置作为设置配置的依赖项

换句话说,我怎么知道这两个应用程序使用X的配置和使用Y构框架?

现在,当我在模拟器中运行该应用程序时,我知道该方案正在使用正确的info.plist值,因为URL和日志设置显示正确。但是,当我存档或在device上运行时,使用了错误的构建配置。我不知道为什么会这样。

屏幕截图和代码说明了现在的工作方式:

图1: 信息清单

图2: 框架构建设置

图3(某些方法的局部):

if let infoDict = NSBundle(identifier: Constants.uniformTypeIdentifier)?.infoDictionary,
        let apiKey = infoDict[Configuration.SerializationKeys.pusherAPIKey] as? String {
            return apiKey
    }

在框架内部,用户定义的构建设置包含需要更改的设置,以进行调试,发布或其他操作(图1)。Info.plist文件理想地提取给定方案的变量值(图2)。然后在代码中,我从info plist中检索值(图3)。

任何设备都被告知拒绝使用生产值,包括我在方案的“运行”操作和“存档”操作上手动切换生产值时-存档使用会返回设备上的错误构建设置。

抱歉,很长,感谢您的阅读。

斯蒂芬·阿兰巴希(Stefan Arambasich)

最终,我决定采用类似的方法,如下所示:

如何在具有不同配置名称的同一工作空间中编译带有应用程序和库的项目?

它在父项目中添加了构建设置,以指导其如何在子项目中找到所需的内容。另外,我需要获取嵌入的.framework文件,并相对于构建路径并使用配置设置对其进行设置。我确实忽略了变体,仅将其$(BUILD_DIR)/$(DEFAULT_CONFIGURATION)-$(PLATFORM_NAME)用于所有值,而不是放弃平台名称以最终获得成功。

当我学习和发现更多内容时,将更新此帖子。


更新时间:2016-2-29:

我删除了.xcconfig文件;他们没有必要。

但是,在尝试在嵌入式框架中实际使用第三个方案时,我遇到了困难。我尝试切换,DEFAULT_CONFIGURATION但设置不成立。忽略一些细节,基本上,即使指定了正确的构建目录,Xcode在使用父级的构建配置设置时也会忽略此细节,并在同一目录中构建所有产品,我也认为这是“ Build Implicit Dependencies”以及“嵌入式框架”构建阶段。但是,如果要删除这些文件然后安装到设备,则该应用程序在启动时会崩溃,因为它找不到框架文件。

待续...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

具有多个工作区的单个项目?

来自分类Dev

工作区中多个项目的Xcode 7代码覆盖率报告

来自分类Dev

确定在Xcode 5工作区中构建项目的顺序(与静态库项目之间的依赖关系)

来自分类Dev

具有多个项目的StackView中的密钥处理

来自分类Dev

具有工作区的Xcode 5中的静态库

来自分类Dev

如何构建和部署具有多个项目的Visual Studio解决方案

来自分类Dev

如何构建和部署具有多个项目的Visual Studio解决方案

来自分类Dev

在单个Eclipse工作区中处理Gradle项目的多个相互依赖的组

来自分类Dev

Xcode:从同一工作区中的框架项目动态获取应用程序项目中框架项目的更新

来自分类Dev

具有多个项目的TypeLITE

来自分类Dev

具有多个“嵌套”项目的列表

来自分类Dev

具有多个项目的对象的 SetState

来自分类Dev

工作区中项目之间的Xcode共享运行脚本构建阶段

来自分类Dev

Xcode中项目的多个目标

来自分类Dev

带有多个项目和 Coca Pods 设置的 Xcode 工作区

来自分类Dev

配置具有公共依赖性的TypeScript项目以构建多个纯JavaScript输出文件

来自分类Dev

Xcode SwiftGen:在具有多个目标的项目中构建失败

来自分类Dev

输出具有多个属于不同项目组配置的销售项目的 SQL 单个事务

来自分类Dev

在Xcode 8中添加AFNetworking后构建项目的问题

来自分类Dev

在Eclipse中更改多个项目的Java构建路径

来自分类Dev

具有多个项目的ASP.NET MVC体系结构中的依赖注入

来自分类Dev

在行和列中具有多个项目的交叉表

来自分类Dev

如何在具有多个项目的 .NET Core 中创建 docker 映像?

来自分类Dev

处理具有多个线程的“ N”个项目的列表

来自分类Dev

Clojure Leiningen编译具有多个项目的错误-ClassNotFoundException

来自分类Dev

制作具有多个文件的项目的最佳方法

来自分类Dev

具有多个项目的Bootstrap 3轮播

来自分类Dev

具有多个项目的Azure连续部署

来自分类Dev

筛选出具有多个项目的文员

Related 相关文章

  1. 1

    具有多个工作区的单个项目?

  2. 2

    工作区中多个项目的Xcode 7代码覆盖率报告

  3. 3

    确定在Xcode 5工作区中构建项目的顺序(与静态库项目之间的依赖关系)

  4. 4

    具有多个项目的StackView中的密钥处理

  5. 5

    具有工作区的Xcode 5中的静态库

  6. 6

    如何构建和部署具有多个项目的Visual Studio解决方案

  7. 7

    如何构建和部署具有多个项目的Visual Studio解决方案

  8. 8

    在单个Eclipse工作区中处理Gradle项目的多个相互依赖的组

  9. 9

    Xcode:从同一工作区中的框架项目动态获取应用程序项目中框架项目的更新

  10. 10

    具有多个项目的TypeLITE

  11. 11

    具有多个“嵌套”项目的列表

  12. 12

    具有多个项目的对象的 SetState

  13. 13

    工作区中项目之间的Xcode共享运行脚本构建阶段

  14. 14

    Xcode中项目的多个目标

  15. 15

    带有多个项目和 Coca Pods 设置的 Xcode 工作区

  16. 16

    配置具有公共依赖性的TypeScript项目以构建多个纯JavaScript输出文件

  17. 17

    Xcode SwiftGen:在具有多个目标的项目中构建失败

  18. 18

    输出具有多个属于不同项目组配置的销售项目的 SQL 单个事务

  19. 19

    在Xcode 8中添加AFNetworking后构建项目的问题

  20. 20

    在Eclipse中更改多个项目的Java构建路径

  21. 21

    具有多个项目的ASP.NET MVC体系结构中的依赖注入

  22. 22

    在行和列中具有多个项目的交叉表

  23. 23

    如何在具有多个项目的 .NET Core 中创建 docker 映像?

  24. 24

    处理具有多个线程的“ N”个项目的列表

  25. 25

    Clojure Leiningen编译具有多个项目的错误-ClassNotFoundException

  26. 26

    制作具有多个文件的项目的最佳方法

  27. 27

    具有多个项目的Bootstrap 3轮播

  28. 28

    具有多个项目的Azure连续部署

  29. 29

    筛选出具有多个项目的文员

热门标签

归档