iOS进阶01:多环境配置

  • Project: 包含了项目所有的代码,资源文件,所有信息。
  • Target:对指定代码和资源文件的具体构建方式。
  • Scheme:对指定Target的环境配置。

多环境配置的三种方式:

  • 多tagert模拟多环境配置
    • 会生成多个 info.plist文件,配置繁琐,容易出错
  • 多 scheme + 多 configuration(Debug、Beta、Release)
  • 多 scheme + xcconfig文件配置 (推荐使用
    • 通过把配置写到对应的文件,管理起来更加清晰

多Target配置

  • 选中一个 Target,右击,复制一个Target
    image

    复制之后,会多出来一个 Target和对应的 info.plist文件
    image
  • 修改 Targetinfo.plist文件,对应的Build Settings—> Packaging—>Info.plist File也需要写成修改后的名称,否则编译器会报错
    image
  • 修改完成后,就可以通过 Scheme选择不同的 Target编译运行
    image

    image

多 scheme + 多 configuration

  • 创建 Beta configuration

    image

  • 新建两个 Scheme,分别命名为 DebugBeta

    image

  • Scheme设置对应的 configuration

  • 创建自定义参数 HOST_URL

    image

  • 在info.plist文件中添加 HOST_URL参数

    image

  • 通过读取 Info.list就可以得到 相应的 HOST_URL

NSString *path = [NSBundle.mainBundle pathForResource:@"Info" ofType:@"plist"];
    NSDictionary *infoDic = [[NSDictionary alloc] initWithContentsOfFile:path];
    NSLog(@"====%@", infoDic[@"HOST_URL"]);
image

image

多 scheme + xcconfig文件配置

通过下图发现,pod 就是通过 xcconfig文件进行配置的

image

  • 创建自己的 xcconfig文件, 注意保存的名称 Config-LoginApp.debug.xcconfig,参考pod命名规则, 文件名 - app名 . 环境 .xcconfig

    image

    image

  • xcconfig文件中自定义参数 HOST_URL,以键值对形式设置

HOST_URL = www.debug.com
image
  • 在info.plist文件中添加 HOST_URL参数

    image

  • 通过读取 Info.list就可以得到 相应的 HOST_URL

NSString *path = [NSBundle.mainBundle pathForResource:@"Info" ofType:@"plist"];
    NSDictionary *infoDic = [[NSDictionary alloc] initWithContentsOfFile:path];
    NSLog(@"====%@", infoDic[@"HOST_URL"]);
image
  • xcconfig还可以修改 Target中的设置,下列以Other Linker Flags举例
HOST_URL = www.debug.com
// OTHER_LDFLAGS 是 Other Linker Flags 的缩写
OTHER_LDFLAGS = -framework "AFNetworking"

image

【注意】Xcode Build Settings更多缩写内容,可以通过这个网址查询地址

xcconfig文件冲突解决

使用自己的 xcconfig文件,运行pod install时,报错如下:

image

  • 通过 #include 引入其他 xcconfig文件

    image

  • 通过 #include导入的其他xcconfig文件,设置了一个配置,在自定义的xcconfig设置该配置,会覆盖导入的其他xcconfig文件的配置,此时需要添加 $(inherited)(代表继承)

    image

你可能感兴趣的:(iOS进阶01:多环境配置)