当我们在开发的过程中,一般至少有两个环境:开发环境和线上环境。
在上线之前需要设置到线上环境,一般都是对服务器地址以及一些其他参数的设置,对于这些参数的配置,方法有多种,这里介绍的是我经常用的一种:创建多个 target。
目前使用的是 Xcode10.1
参考链接:
https://www.jianshu.com/p/f85b58436363
https://www.jianshu.com/p/9a93e614a98e
创建 Target
在原来的 Target 上右键,选择 Duplicate
,复制一个新的 target,默认名字是 SwiftExercise copy
,同时产生一个新的 XXX copy-info.plist
文件

配置新的 Target
名字修改
点击新的 target ,回车,修改成你需要的名字,同时修改新 target 对应的 info.plist
文件名字,修改 Manage Scheme
中新的 target 的名字

Build Settings 配置
因为我们修改了默认的 info.plist 文件名字,甚至移动了这个新的 plist 文件的位置,所以需要在 新的 target 中指定它所对应的 plist 文件,

另外,我们需要给新的 target 设置一个 flag(作用后面讲),对于 flag 的格式,写成一行或者两行都可以,这种格式也是可以的 "-DENV1"

环境控制
创建一个 swift 文件,在这个文件里面各个环境的地址,这里的 ENV1、ENV2 就是我们上一步在 Build Settings 中添加的 flag
#if ENV1
let ServerRoot = "www.env1.com"
#elseif ENV2
let ServerRoot = "www.env2.com"
#else
let ServerRoot = "www.prd.com"
#endif
这样设置以后,当我们在不同的环境中,ServerRoot 就是这个环境下对应的地址。
以下内容为可选的
同一个项目,不同的 BundleID
我们创建了多个 target ,每个 target 都可以单独设置它的 Bundle Identifier
,运行的时候,它们就是不同的 App 了,一台手机上可以同时安装不同环境的App。但这也有一个麻烦的地方,因为是不同的 App 了,如果你集成了推送,就要为他们分别创建推送证书。

每个环境对应自己的 AppIcon
创建新的 AppIcon,并修改名字,

在对应的 target 上设置 App Icons Source
,这样不同的环境就有不同的 AppIcon 了

网友评论