-
Project
: 包含了项目所有的代码,资源文件,所有信息。 -
Target
:对指定代码和资源文件的具体构建方式。 -
Scheme
:对指定Target的环境配置。
多环境配置的三种方式:
- 多tagert模拟多环境配置
- 会生成多个 info.plist文件,配置繁琐,容易出错
- 多 scheme + 多 configuration(Debug、Beta、Release)
- 多 scheme + xcconfig文件配置 (
推荐使用
)- 通过把配置写到对应的文件,管理起来更加清晰
多Target配置
- 选中一个
Target
,右击,复制一个Target
复制之后,会多出来一个Target
和对应的info.plist文件
- 修改
Target
和info.plist文件
,对应的Build Settings—> Packaging—>Info.plist File
也需要写成修改后的名称,否则编译器会报错
- 修改完成后,就可以通过
Scheme
选择不同的 Target编译运行
多 scheme + 多 configuration
-
创建
Beta
configuration
-
新建两个 Scheme,分别命名为
Debug
、Beta
给
Scheme
设置对应的configuration
-
创建自定义参数
HOST_URL
-
在info.plist文件中添加
HOST_URL
参数
通过读取
Info.list
就可以得到 相应的HOST_URL
NSString *path = [NSBundle.mainBundle pathForResource:@"Info" ofType:@"plist"];
NSDictionary *infoDic = [[NSDictionary alloc] initWithContentsOfFile:path];
NSLog(@"====%@", infoDic[@"HOST_URL"]);
多 scheme + xcconfig文件配置
通过下图发现,pod
就是通过 xcconfig文件
进行配置的
-
创建自己的
xcconfig文件
, 注意保存的名称Config-LoginApp.debug.xcconfig
,参考pod命名规则,文件名 - app名 . 环境 .xcconfig
在
xcconfig文件
中自定义参数HOST_URL
,以键值对形式设置
HOST_URL = www.debug.com
-
在info.plist文件中添加
HOST_URL
参数
通过读取
Info.list
就可以得到 相应的HOST_URL
NSString *path = [NSBundle.mainBundle pathForResource:@"Info" ofType:@"plist"];
NSDictionary *infoDic = [[NSDictionary alloc] initWithContentsOfFile:path];
NSLog(@"====%@", infoDic[@"HOST_URL"]);
-
xcconfig
还可以修改Target
中的设置,下列以Other Linker Flags
举例
HOST_URL = www.debug.com
// OTHER_LDFLAGS 是 Other Linker Flags 的缩写
OTHER_LDFLAGS = -framework "AFNetworking"
【注意】
Xcode Build Settings
更多缩写内容,可以通过这个网址查询地址
xcconfig文件冲突解决
使用自己的 xcconfig文件,运行pod install
时,报错如下:
-
通过
#include
引入其他 xcconfig文件
-
通过
#include
导入的其他xcconfig文件,设置了一个配置,在自定义的xcconfig设置该配置,会覆盖导入的其他xcconfig文件的配置,此时需要添加$(inherited)
(代表继承)