上一篇文章定义好了不同scheme下不同的bundle ID和display name 就可以通过选择不同scheme来生成两个内容相同的独立APP,但是APP中的内容更改还需要处理一下。
我们如何在APP代码中判断当前是哪个scheme,又如何判断当前scheme下是debug还是release?
这是就需要用到预处理宏定义,在build setting中的Apple LLVM8.0- Preprocessing下有Preprocessor Macros,该标签同样会根据你的configeration来为你生成好你所有的配置,并会带有默认的宏定义。
我们无需管它默认的宏定义,需要自己来配置,这里我对每种configuration设置了两个宏定义,一个用来辨别APP,一个用来辨别是debug还是release版本。这样在代码中就可以判断了,举两个例子:
通过宏定义判断APP环境来定义URL
通过宏定义判断当前APP Navigation Bar的标题
APP的icon和launch image这种系统级别的设置同样需要到build setting中去更改,而你的icon 和 launch image则需要创建三份不同名的,然后进入设置中修改对应的名字即可。
到这里你应该能明白大概的原理,就是这么一个映射链
如果你的设置没有生效请按照这个图来屡清思路,进入Edit Scheme看看,Run和Archive对应的模式是否选择正确了,不要出现Run模式下使用release配置,那就肯定会出错了。
还有一个坑就是如果APP需要特定的配置文件的话,那么建议使用多Target模式来进行多环境配置,否则打包阶段会出现很多问题。配置多target的目的在于将每个APP对应的General设置单独分开,也就是把debug和release配置文件单独分开,而不会在构建的时候出现各种各样奇怪的错误,而configuration只用来处理一些APP内部分化的一些细节。