利用Target完成多环境配置

优质
小牛编辑
127浏览
2023-12-01

利用Target完成多环境配置

TARGETS下选中对应Target右键选择Duplicate, 会产生一个新的TargetScheme和一个新的info.plist文件, 带有默认名称

接下来为新的TargetSchemeinfo.plist文件修改名称, 设定新的bundleID(Duplicate后原BundleID也会相应变化), 完成新Target的初步设定

修改好名称后, 记得在新TargetBuild settings中更新info.plist文件名称

这样新的Target就新增好了, 接下来就可以借助多Target进行多环境配置了


实际运用

  • 设置不同的App icon

  • 先在Assets.xcassets中新建一个iOS App icon, 为两组App icon设置不同图片

  • Project-General下, 为不同Target设置App icons and Launch images

    选择icon

  • 配合自定义宏, 完成不同的环境配置

  • 在多Target基础上, 选择我们将要新增自定义宏的Target

  • Build settings-Preprocessor Macros下, 为其新增自定义宏

    自定义宏

  • 代码中针对不同的环境执行不同处理

     #if DEV
         self.describeLabel.text = @"DEV target环境下";
     #else
         self.describeLabel.text = @"多Target实现多环境配置";
     #endif
    

    示例配置中对DebugRelease设定了不同的值, 即 RELEASE=0,DEBUG=1
    在使用与处理指令#if时, 存在自定义的宏DEV且值为1时有效, 执行#if DEV分支代码
    #if DEV换成#ifdef DEV, 只要存在DEV的定义, 就会执行#ifdef DEV分支代码

    #ifdef只是判断后面的标识符有没有定义,而不在乎标识符的值,标识符是01对它来说都没有区别,只要预先定义了,执行#ifdef后的代码
    #if指令更像常规的C中的if#if后跟常量整数表达式。如果表达式为非零值,则表达式为真

    如果是Swfit项目, 在Other Swift Flags来新增环境变量
    注意前面需要增加-D后面是自定义的参数, 中间可以有空格, 也可以没有空格


方案不足之处:

配置零散, 尤其是在为Target设置不同环境变量(自定义宏)时


参考资料

使用 Xcode 的 Target 区分开发和生产环境 、 关于管理多个 Target 的一些注意事项

下一篇: 利用Scheme完成多环境配置