Xcode通过Build Configuration配置多套域名方法

摘要

在我们实际开发中,后台服务器一般都会有几套地址,如:测试,预生产,生产。这时,我们项目打不同环境包时,如果通过注释代码或修改域名也是可以达到目的。但是这样比较烦锁还容易出错。像我们公司,还有一套性能测试环境,所有的第三方接口处理都需要屏蔽,如果还这样来修改,熟悉代码还好,几分钟可以注释好,但是对于一个不熟悉的同事,那么就会显得举步最艰难了,于是这篇文章讲述下,只通过修改Xcode中scheme的configaration配置项,选择你要的环境,一步切换环境,简单实用且不会出错。


使用场景

针对不对的域名或环境,实现打包或运行的代码不一致。

步骤
  • 一、创建一个configuration


    Xcode通过Build Configuration配置多套域名方法_第1张图片
    scheme1.png

    如上图,一般我们都是直接Duplicate Debug,因为release模型是不支持断点调试的。

  • 二、然后我们就可以在scheme中看到我们新添加的


    Xcode通过Build Configuration配置多套域名方法_第2张图片
    scheme2.png

    这里我添加了2个环境,一个Pre为预生产,一个Test为性能测试。分别实现两套不同的环境。

  • 三、修改build settings下的Preprocessor Macros下对应的值

    Xcode通过Build Configuration配置多套域名方法_第3张图片
    scheme3.png

    注意:经测试,这一步完全可以省略,也是可能实现功能的。

  • 四、各个配置下添加自定义标签other swift flags,如下图

    Xcode通过Build Configuration配置多套域名方法_第4张图片
    scheme4.png

    这一步才是重点,我们代码中就是通过判断flags来实现。
    注意Debug下,默认是有一个DEBUG标签,代码中尽量不要用,而是用自己自定义的XYJDEBUG,不然选择其它配置也会跑到DEBUG环境下的代码。


测试

  • 配置选择,如图,在run模型下,build configuration选择不同的配置,然后运行程序,会执行对应的代码,如果打包,在archive模型下,去选择build configuration即可。


    Xcode通过Build Configuration配置多套域名方法_第5张图片
    scheme5.png
  • 测试示例代码
#if XYJDEBUG // 测试环境
let baseUrl = "https://test.baidu.com/"
#elseif Pre // 预生产
let baseUrl = "https://pre.baidu.com/"
#elseif Test // 性能测试
let baseUrl = "https://functionTest.baidu.com/"
#else // 生产
let baseUrl = "https://app.baidu.com/"
#endif


class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // 测试代码
        testPrint()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    
    func testPrint() -> Void {
        
        //打印地址
        print("请求的基址为:\(baseUrl)")
        
        #if XYJDEBUG
                print("测试环境")
        #elseif Pre
                print("Pre环境")
        #elseif Test
                print("Test性能测试环境")
        #else // 生产
                print("生产环境")
        #endif
    }

}

cocoapods报错

  • 如果项目中使用了cocoapods管理第三方,那么选择你新创建出来的项目build时,会报找不到第三方库错误。解决办法如下:


    Xcode通过Build Configuration配置多套域名方法_第6张图片
    configuration.png

写在最后

很多功能都可以通过这个实现多套环境(通过修改build settings里的一般都可以),如:appicon,appName,bundleId,info.plist等。

你可能感兴趣的:(Xcode通过Build Configuration配置多套域名方法)