- 需求:一套代码可以成多个App,其中图标、启动图、名称等不一样。或者一个项目区分不同环境,不同环境安装不同的依赖库或者访问不同的服务器,或者执行的代码逻辑不同等。
大致流程:
1. 创建Target或者说在当前项目target基础上复制新的target
2. 修改Target、Scheme配置
3. 配置Info.plist(如果只是环境区分不用修改)
4. 宏定义(Preprocessor Macros)设置
5. Assets.xcassets的设置(app图片、launch启动页)
1. 创建新的Target(快捷键 Command + D)
![](https://img.haomeiwen.com/i1483397/a53684963e1cf37d.png)
2. 复制后会在原来target基础上生成一个新的target,同时会生成一个新的plist文件。plist文件的位置是在项目的主目录下,如果觉得放着不合适可以挪到某个文件夹下然后在引入到项目中。
![](https://img.haomeiwen.com/i1483397/7f14f6ebd4c3c92f.png)
3. 修改target和Scheme名称。
![](https://img.haomeiwen.com/i1483397/0588885c5f10c7b8.png)
![](https://img.haomeiwen.com/i1483397/0b97557854e16831.png)
4. 修改target引用的plist文件的路径。
![](https://img.haomeiwen.com/i1483397/1d090614a4f62b17.png)
5. 添加项目配置
![](https://img.haomeiwen.com/i1483397/57367bdc687fd1a6.png)
6. 宏定义(Build Setting–>Preprocessor Macros)主要用于区分环境或者不同App显示的样式或者逻辑的不同。全局宏,在所有/整个工程的代码中都是有效的。有几个target设置几个宏定义,在代码中用来区分当前选中的target用来区分项目或者环境。
![](https://img.haomeiwen.com/i1483397/8ff165334d69946d.png)
- 根据不同的target宏来引入不同的头文件或者处理不同的逻辑
![](https://img.haomeiwen.com/i1483397/4335462d44496a7c.png)
7. 新建对应target的资源文件。
![](https://img.haomeiwen.com/i1483397/1c7a0c0efd458425.png)
- 直接选择想要添加资源文件的target即可。新建好后直接在里面添加图标启动图等,就可以正常使用。
![](https://img.haomeiwen.com/i1483397/308215859e270959.png)
- 初始资源文件选中的target修改为第一个。因为创建新的target后,初始资源文件会默认选中创建好的target,也就是创建一个target初始资源文件会选中一个可能导致设置在新的资源文件添加过图标等不能正确显示。
![](https://img.haomeiwen.com/i1483397/9b357e5b1d7c60f6.png)
- 图标显示正常
![](https://img.haomeiwen.com/i1483397/7119382d1d3f63f0.png)
other: 如果只是区分环境可以按照下面的直接添加配置,设置区分环境的宏这样简单点。
![](https://img.haomeiwen.com/i1483397/26313187876b2e2e.png)
![](https://img.haomeiwen.com/i1483397/83118c5ee56043a1.png)
网友评论