【问题标题】:ios - Set environment of a target based on the running targetios - 根据正在运行的目标设置目标的环境
【发布时间】:2020-06-05 13:12:32
【问题描述】:

我有一个带有这些目标的 iOS 项目:

- MyTargetUAT 
- MyTargetPreprod
- MyCustomFramework 
    - EmbeddedFrameworkUAT 
    - EmbeddedFrameworkPreprod 

我的目标是,当我构建 MyTargetUAT 时,告诉 MyCustomFramework 使用 EmbeddedFrameworkUAT。

MyCustomFramework 如何知道在运行时设置了哪个环境?

注意:每次我构建应用程序时,都会重新编译 MyCustomFramework 并生成新的 MyCustomFramework.framework

【问题讨论】:

    标签: ios swift xcode target compiler-flags


    【解决方案1】:

    默认情况下,您的目标具有不同的 Info.plist 文件。也许您可以在此文件中添加一个变量来检测您正在使用哪个目标,或者您的 Info.plist 文件已经包含一些特定于目标的值(例如 Bundle ID)。您可以使用这些值。

    【讨论】:

    • 感谢您的回答!但是是否可以访问不在我的目标中的 plist ?你怎么能做到?
    • 您在目标的构建设置中设置了 info.plist 文件。如果您将相关的 .plist 文件设置为目标,您可以在代码中解析它并查看内部。您不需要将文件添加到目标。或者您可以使用 Info.plist 中的两个不同的 .plist 文件(仅用于这些配置)并解析您的代码。但这一次,您可能需要将此文件添加到相关目标中。
    • 详细用法可以看这里appcoda.com/xcconfig-guide 也用到xcodeconfig文件。这是比我提到的更好的做法
    【解决方案2】:

    我认为您可以使用构建短语脚本。首先,您需要 MyCustomFramework 目标中的配置文件,您的目标读取配置文件以决定使用哪个嵌入式框架。然后在您的 MyTargetUAT 目标构建短语中,添加一个脚本来修改您的 MyCustomFramework 目标中的配置文件。因此,当您构建 MyTargetUAT 目标时,脚本文件会被执行,并更新您的 MyCustomFramework 目标配置。

    【讨论】:

    • 是的,但是 MyCustomFramework 将如何确定当前正在运行的是 MyTargetUAT 还是 MyTargetPreprod?
    • @UgoMarinelli 跑步?跑步是什么意思?您的意思是您的 MyCustomFramework 目标代码正在执行还是代码正在编译和链接?你想动态替换你的代码吗?
    • 当我的应用程序在编译时,它每次都会重建 MyCustomFramework,我想运行一个脚本来根据目标(MyTargetUAT 或 MyTargetPreprod)选择好的嵌入式框架
    • 好的,我明白了!因此,为您的 MyCustomFramework 目标编写一个构建短语,以根据编辑您的构建环境(如框架路径)读取配置文件,为其添加正确的嵌入式框架文件路径。然后你就完成了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-14
    • 1970-01-01
    • 2016-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多