xconfig配合scheme配置环境

这次实践的目的: 

1.通过xconfig给不同scheme配置不同的base_URL

2.通过xconfig给不同scheme配置 build Setting设置

开始:

1.先新建一个工程

2.使用cocoaPods随便管理个第三方库

3.新增scheme,Debug、Beta 两个


4.打开scheme,选择Debug ->build Config->选择Debug,Beta 同理,XconfigDemo ->对应Release


这时候就可以看到build Setting 里面 多了一个beta了


beta的所有设置 暂时都跟Debug一样

5.


6.这时候 从新pod install 一下,Pods里面就多了一个beta的配置了,先编译一下 看看有没有问题


7.刚刚我们生成了3个环境的xconfig配置文件,但是还没有生效。

8.然后到这里去 指定对应的配置文件, 应该是配置的Pods的xconfig

9.当你修改后 就有个问题 pods的xconfig怎么办?

所以 我们需要在我们的xconfig文件里面引入 pods的xconfig,只需要指定文件路径就好

#include "Pods/Target Support Files/Pods-XconfigDemo/Pods-XconfigDemo.debug.xcconfig"

就是说 先获取到 Pods的xconfig文件的路径


10.然后将那个文件 直接拖到 我们的xconfig里面 就可以看到完整路径

我们只需要 项目名 后面的 那部分就好了,引入后 再定义一个 host地址

最下面那个路径 只是为了方便我们看的 用完了 就删了

11.定义一个 host地址,像我这样,beta 和 release同理


最好先按我这样写个IP
最好先按我这样写个IP


最好先按我这样写个IP

12.最好先按我这样写个IP,等会儿讲原因,弄好了后 切换scheme 跑一下 看看能不能 跑起来


13.这三个scheme都切换跑一下 看看行不行

14.这里顺便说一下 xconfig的原理,它其实 就是一种 key-Value的取,定义一个键 设置一个值,最后就按这个键进行取值,

既然xconfig 是通过键取值 那么 我们就需要通过一个 取值的办法 得到 我们定义的host,

到info.plist里面 添加一个host的键值对,

HOSR_URL 是项目取值用的键,

${Host_URL} 是在取xconfig里面的值


键值对

15.定义好了 到项目里 找个地方取值,然后跑一下项目 看看打印

NSString * path = [NSBundle.mainBundle pathForResource:@"Info" ofType:@"plist"];

NSDictionary * infoDic = [NSDictionary dictionaryWithContentsOfFile:path];

NSLog(@"Host:%@",infoDic[@"HOST_URL"]);

16,分别切换一下 scheme 看看打印啥模样?是对应刚才自定的host_ur

结束:

多环境配置不就实现了啊,然后我们看之前我说的 我们实践的目的

这次实践的目的:

1.通过xconfig给不同scheme配置不同的base_URL

2.通过xconfig给不同scheme配置 build Setting设置

惊喜:

第二个 build Setting里面 任意设置 都可以在xconfig里面 根据不同的scheme进行 键值对的设置,当然没这么简单

https://xcodebuildsettings.com/,这个地址是查 对应设置的 key的,

比如我们要设置 Header Search Path,在刚刚那个地址去搜索


HEADER_SEARCH_PATHS

HEADER_SEARCH_PATHS,得到key是这个,build Setting里面的 你以后需要了慢慢玩

问题+坑:

第一 :假设我们的xconfig里面定义了一个key,Pods的xconfig也定义了怎么办?

我们看看Pods里面 这个关键字,就是 继承的意思,继承别人的定义

第二: 我们release环境 一般不会是个IP吧 你试试用个正式点的地址看看

比如: https://www.baidu.com,你注意看你定义的位置,//后面的变色了,//表示注释

结果:Host_URL = https:/$()/www.baidu.com,特殊定义符,记得转义一下哦

结尾:

还是验证一下配置是 build setting,我在Debug.xcconfig里面 配置了 Header Search Path



以后build Setting 里面有任何配置 只需要在xcconfig里面配置就行了 这样 到底配置了些啥 一目了然

你可能感兴趣的:(xconfig配合scheme配置环境)