【问题标题】:How to enable parts of code with external files .plist or .xcconfig如何使用外部文件 .plist 或 .xcconfig 启用部分代码
【发布时间】:2018-05-08 04:26:51
【问题描述】:

我有一个正在使用 fastlane 工具链构建的项目。

我有多个部署目标(曲棍球应用、试飞、应用商店) - 对于每个部署,我都对禁用和启用某些功能感兴趣。

例如 - 当我使用 hockeyapp 的企业证书进行 alpha 构建时,我想禁用 Flurry 分析。

当我进行 beta 构建时,我想更改 app-id 和/或更改 Flurry 键

我目前在 fastlane 中使用各种 sed 命令来搜索和替换文件等。

话虽如此,我相信还有更好的方法。

我知道在 Obj-c 中我可以#ifdef 针对某些构建环境标志来启用/禁用部分代码。快速解决此问题的最佳方法是什么。

我是否使用某种自定义的.plist 文件或.xcconfig 设置来告诉应用程序要做什么/使用什么,还是有不同的方法?

我感兴趣的是

  • 禁用部分代码(忽略特定配置中的特定功能)
  • 更改代码中使用的值,也就是 API_KEY 或类似的东西

【问题讨论】:

    标签: ios objective-c xcode swift fastlane


    【解决方案1】:

    你仍然可以在 swift 中使用类似于#ifdef 的预处理器,你可以将它与.xcconfig 结合使用,可以用来指定各种变量。您的脚本可以生成将进入 .xcconfig 变量的值。

    基本设置是:

    1. 创建一个.xcconfig 文件并将其与所需的构建配置相关联(在项目设置 -> 信息中)。
    2. 将变量添加到.xcconfig。例如,如果您想激活 ALPHA 构建,您可以执行以下操作:IS_ALPHA_BUILD=-D ALPHA。注意这里需要的-D。如果您希望关闭该标志,您的脚本可以将变量留空。
    3. 在目标的构建设置中,在“Swift Complier - Custom Flags”->“Other Swift Flags”下添加基于.xcconfig 文件变量的标志:${IS_ALPHA_BUILD}。如果 .xcconfig 设置正确,您应该在完成变量编辑后看到其变量内容。
    4. 在代码中使用标志:

      #if ALPHA
          print("alpha")
      #else
          print("not alpha")
      #endif
      

    我希望这会有所帮助,或者它至少可以让您了解最适合您的最佳方法。

    【讨论】:

      【解决方案2】:

      我建议将可选代码放在使用扩展实现它的单独文件中。然后,您可以使用项目导航器中的文件属性启用/禁用文件。

      即使是我在项目中有 3 个目标的单个应用程序,我也会这样做:完整 IOS 版本(付费)、有限 IOS 版本(免费)和 Apple TV 版本。

      我还使用相同的技术来启用/禁用在多个地方使用但仅在其中一个目标中实际工作的整个类的存根。

      【讨论】:

      • 所以 - 如果你想使用 GUI,那就太好了,但我使用的是 fastlane,它是一个构建工具链,允许你从命令行执行所有操作
      • 何对不起,不知道fastlane是什么,以为只是另一个框架。对命令行的东西无能为力(多年来一直在逃避它们)
      【解决方案3】:

      我有一个类似的概念问题。我想使用 FDD,而不是根据需要使用一种机制来禁用功能。我将尝试使用 pList。 我最初的想法是在 plist 中声明所有功能并赋予它们布尔值。因此,如果需要启用某个功能,我只会在 plist 中启用它。

      在编程方面,我计划将所有功能编写为包含条件语句的父数据类型的扩展。因此,从控制器的角度来看,我的代码工作将减少为仅调用行为/函数。

      我希望它有一定的意义,我可能会尽快重写答案

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-04-12
        • 1970-01-01
        • 2012-02-23
        • 1970-01-01
        • 2015-12-21
        • 2019-05-27
        • 2010-09-18
        相关资源
        最近更新 更多