OC学习24:多环境配置
多环境配置
- Project : 包含了项目所有的代码、资源文件和所有信息。
- Target : 对指定代码和资源文件的具体构建方式。
- Scheme : 对指定的Target的环境配置
在实际开发中,我们必须要进行网络请求(内网和外网
),而网络请求则就要针对不同的环境(开发
、测试
、生产
)有不同的的 主机名称(URL_HOST)
,那么我们如何获取某个环境下的URL_HOST
,那么在这个过程中,我们需要进行配置,而 多环境配置
的方式有三种:
- Target 配置
- Scheme 配置
- xcconfig 配置
Target 配置
- 新建Dev的Target
选中
Target
下LoginApp
-> 右键选中Duplicate
复制 -> 生成新的LoginApp copy
-> 将其改名为LoginApp-Dev
修改
Bundle Identifier
名为com.srsf.LoginApp-Dev
修改新生成的
LoginApp copy-info
名为LoginApp-Dev-info
,plist名称改变同时需要在Build Settings
->Packaging
->info.list File
下 -> 将LoginApp copy-info
改成LoginApp-Dev-info
。
如下图:
注:到目前为止,你运行 LoginApp
和 LoginApp-Dev
会生成两个 App
。
- 添加自定义宏
macros
- 选中
LoginApp-Dev
->Builds Settings
->all
-> 搜索macros
->Apple Clang - Preprocessing
-> 选中Debug
右键空白双击 -> 弹出添加DEV=1
;同理,Release
设置DEV=0
- 此时,自定义的宏已经生效了,此时可以在任意地方调用下面的方式进行判断使用
1 | #if DEV |
- 当你切换不同的
Scheme
时,打印不同的URL_HOST
如果你觉得 Scheme
下名字看的不爽,也可以将 Scheme
下的名字也修改:LoginApp copy
改成 LoginApp-Dev
- 总结
Target
配置这种方式,每创建一个 target
都会产生新的 info.plist
,每一个都需要去配置 macros
,配置比较乱,不推荐
使用。
Scheme 配置
- 首先我们要了解到
Scheme
默认是有两种环境变量Debug
和Release
,可以在Edit Scheme
->Run
->info
->Build Configuration
下查看。
- 其次,与之对应的环境配置在
Project
->LoginApp
->Configurations
下也可以看到
- 在
Project
->Info
->Configurations
下,我们可以创建一个自己的配置环境Beta
,现在我们有了三
种配置方式,对应的在Edit Scheme
->Run
->info
->Build Configuration
下也有三种,同时在Target
->Build Settings
->Build Active Architecture Only
下也有对应的三种配置方式,说明这是一个全局
的配置,如下图:
- 新建 Scheme
- 点击
LoginApp
-> manager Schemes -> 点击 + 号 -> 添加Debug
和Beta
两种,加上LoginApp
本身Release
就是三种,对应上面三种
配置
- 点击
Edit Scheme
切换Scheme
,并指定Configurations
,如下图
- 自定义主机名URL_HOST
Target
->Build Settings
-> 点击+
号 ->Add User-Defined Settings
->URL_HOST
,此时我们发现其对应的配置也是三个,分别设值如下:
- 将
URL_HOST
添加到info.plist
文件中,Build Settings
中的配置可以通过info.plist
暴露出来,可以直接读出来
- 在项目中使用
1 | NSString * path = [NSBundle.mainBundle pathForResource:@"Info" ofType:@"plist"]; |
切换 Scheme
,打印如下
1 | Debug:http://137.0.0.2 |
- 同理配置图标的也一样
xcconfig 配置
- 在实际项目中,我们可能会有多个主机名称
HOST_URL
,因此,我们还是需要去配置多个Configurations
,下面还是以三个为准
- 在
Project
->LoginApp
->Configurations
下,我们可以创建一个自己的配置环境Beta
,现在我们有 了三
种配置方式,对应的在Edit Scheme
->Run
->info
->Build Configuration
下也有三种,同时在Target
->Build Settings
->Build Active Architecture Only
下也有对应的三种配置方式,说明这是一个全局
的配置,如下图:
- 在主项目下,创建
Congifg
文件,并在下面创建三个对应环境的.xxconfig
文件
- 在Config文件夹下 -> command + N -> 搜索config
- 输入对应的名称 -> 点击create
- 创建成功之后,如下图
- 选择对应Target的进行配置
- 在
xxconfig
文件中写入HOST_URL
Debug
下
1 | A = / |
- Beta
1 | A = / |
- Release :
1 | A = / |
- 同样,我们需要在
info.plist
文件中暴露,在项目中取出
- 项目中代码取出
1 | NSString * path = [NSBundle.mainBundle pathForResource:@"Info" ofType:@"plist"]; |
切换不同的 scheme 的打印结果
1 | Debug:http://127.0.0.1 |
Pch
- 到 Target -> Build Settings -> 设值不同的DEBUG值
- 具体是现代吗
1 | #if (DEBUG == 1) |
xconfig 其他功能
xconfig
全名是xcodeConfig
,它不仅仅是一个文件,它的本质是控制Build Settings
里面的选项(比如配置动态库、静态库等)
1 | // ld 配置到链接器上 |
- 在Debug配置下运行,报错
ld: framework not found AFNetworking
,然后我们找到Other Linker Flags
,可以看到如下
他的原理与
cocoapods
的原理相同想查找
Build Settings
中选项的缩写,这里有一个网站可以去查看 Build Settings 缩写网站比如搜索一个
header search path
,找到其缩写HEADER_SEARCH_PATHS
1 | HEADER_SEARCH_PATHS = \user\zjbboy |
- 你会在
build settings
找到
- Post title:OC学习24:多环境配置
- Post author:张建
- Create time:2023-03-21 08:31:38
- Post link:https://redefine.ohevan.com/2023/03/21/OC/OC学习24:多环境配置/
- Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.