iOS使用Build Configuration实现多环境切换

一、背景

        iOS开发中经常遇到需要根据不同环境,配置不同的请求路径,或走不同代码逻辑的需求。但是默认的环境配置只有Debug和Release,可能无法满足实际需求。比如,我们需要在内测环境使用企业级开发证书,实现无上限分发测试,或者我们需要在APP内嵌入H5页面,上线前需要切换正式环境测试,但是又不能直接替换正式环境的包,就需要copy一个包使用不同的访问路径,相应的app内配置的路径也要修改,那么我们就需要增加一个内测环境,根据环境不同使用不同证书和路径。

二、实现步骤

1、创建新的Configuration环境

        选中项目的Project,在info标签下找到Configurations,默认有Debug和Release。点击+号。选择Duplicate “Release” Configuration,这里我取名叫Adhoc。 

2、配置证书

        选择项目的target,选中Signing & Capabilites,分别配置需要的证书,包括bundle id、应用名称等也可以根据环境配置不同的id和名称。

需要注意的是,XCode直接连接手机调试不管什么环境都只能使用开发证书,生产证书是不能用于调试的,只能用于编译打包后分发。若使用生产证书调试,运行后会报错如下:

额外补充下,XCode的证书管理机制

  • 使用手动证书管理:Build(⌘B) 和 Run(⌘B)时Xcode会根据设置选择证书和profile描述文件。
  • 使用自动改证书管理:Build(⌘B) 和 Run(⌘B)时Xcode会默认选择开发证书和描述文件。
  • 使用archive打包:不管是自动还是手动管理证书,XCode都会根据环境自动切换开发或生产证书。

3、添加宏定义

选择项目的target,选中Build settings,搜索找到Preprocessor Macros,在Adhoc中添加ADHOC=1宏定义。

4、条件编译

根据宏定义环境变量配置不同路径和代码逻辑

//app请求路径
#if DEBUG
    //测试环境
    #define H5Path       @"https://www.test.com:443/"
#elif ADHOC
    //内测环境
    #define H5Path       @"https://www.adhoc.com:443/"
#else
    //正式环境
    #define H5Path       @"https://www.prduct.com:443/"
#endif


//H5项目路径
#if DEBUG
    //测试环境
    #define H5Path       @"https://www.test.com/h5/vescort_h5"
#elif ADHOC
    //内测环境
    #define H5Path       @"https://www.prduct.com/h5/vescort_h5_test"
#else
    //正式环境
    #define H5Path       @"https://www.prduct.com/h5/vescort_h5"
#endif


//日志输出控制(仅debug环境打印日志)
#if DEBUG
    #define NSLog(FORMAT, ...) fprintf(stderr,"[%s:%d行] %s\n",[[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String], __LINE__, [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);
#else
    #define NSLog(FORMAT, ...) nil
#endif

5、运行新环境

切换Run > Build Configuration环境为Adhoc,在运行就可以了。如果使用cocopods管理项目的话,添加环境后需要再次运行pod install才能编译新的环境。

运行pod install后会在pod文件夹下面看到adhoc文件

如果build configuration无法完全满足需求,也可以通过设置不同的Target或Scheme来实现根据不同的配置打包不同的app。

参考链接:iOS 设置Build Configuration实现多环境切换 - 脉脉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值