用一套代码不同的主题图片和appIcon来编译出不同的ipa包。
1、新建一个工程TestUI

2、新建完工程之后,默认会创建一个target和工程名相同TestUI,手动改名为TestUI_1,同时也要注意修改Scheme里面的target名字,可以先删除TestUI,然后再添加TestUI_1
3、配置好app名字和appIcon图标
plist文件增加Bundle display name修改app的显示名字为TestUI-1

Assets.xcassets里面配置appIcon图标

到这一步有经验的iOS开发配置好发布证书之后都可以打出一个iPa包。
下面开始在同一套代码的基础之上来完成另一套不同UI图标的iPa包
1、新建一个target,target是可以创建多个的,这里在原来target的基础上使用Duplicate创建另一个TestUI_2

这里刚建完会显示为TestUI copy,手动改名为TestUI_2,同时也要注意修改Scheme里面的target名字,可以先删除TestUI copy,然后再添加TestUI_2

使用Duplicate这样而不是完全新建的好处是所有的代码不需要手动引用到TestUI_2,这样做会自动引用之前已经编写好的代码。

同样的Duplicate的时候会创建一个TestUI copy-Info.plist文件,这里改名为TestUI_2-Info.plist,新建一个文件TestUI_2_Group来管理一些配置信息TestUI_2,把TestUI_2-Info.plist文件也放入TestUI_2_Group中,这里注意需要修改Build Settings中plist文件的路径为TestUI_2_Group/TestUI_2-Info.plist

2、配置target TestUI_2的ipa包的名字。
plist文件中增加Bundle display name修改app的显示名字为TestUI-2。
3、配置target TestUI_2的ipa包的AppIcon。
创建一个asset catelogs命名为TestUI_2.xcassets,里面添加AppIcon图标。注意修改General下面App Icons and Launch Images的里App Icon要选择TestUI_2下面的AppIcon。

到这里显示名字和app图标这些配置基本已经完成。
但是app中其他的一些UI图标主色调的配置还没开始,下面还是来完成其他图标和颜色值的管理。
以配置tabbarItem的图片为例,两套不同的UI可以设计两套不同的图片。当然如果图片是一样的只是色值不同,那么我们也可以使用svg图片来做,在这里不做具体的展开。
为了更方便的管理不同target的资源,我们给上面的target也创建一个文件TestUI_1_Group来管理资源。把对应的plist文件放进去,并注意修改build settings里面plist的路径。
另外新建一个asset catelogs命名为TestUI_1.xcassets来管理TestUI_1的AppIcon,注意修改General下面App Icons and Launch Images的里App Icon要选择TestUI_1下面的AppIcon。

4、移除最开始创建工程时自动创建的Assets.xcassets里面的AppIcon。
5、用最开始创建工程时自动创建的Assets.xcassets管理TestUI_1和TestUI_2里面共同的图片资源。targets下面TestUI_1和TestUI_2的General General下面App Icons and Launch Images下都勾选Include all app icon assets。这样做的目的是编译时会把TestUI_1和TestUI_2下所有引用的xcassets文件里面的图片资源都可以用到。具体到这里是TestUI_1包括Assets.xcassets和TestUI_1.xcassets,TestUI_2包括Assets.xcassets和TestUI_2.xcassets。

这样我们可以把TestUI_1和TestUI_2共同需要用到的图片资源放进Assets.xcassets,比如nav_back。

6、用TestUI_1.xcassets和TestUI_2.xcassets分别管理各自的图片资源,图片命名可以相同。比如tab_item1。


到这里进本配置都已经完成啦。
另外由于是Swift和Object-C混编。所以在OC代码中调用Swift代码需要引入头文件#import "TestUI-Swift.h"。但是由于我们手动改了target的名字。所以在
build Settings 中需要修改Product Module Name 为TestUI。如果不这样做可以会出现not found TestUI-Swift.h这样的错误。

7、注意在进行文件管理操作的时候不要多次引用plist文件,在Build Phases 中引入的plist文件删掉。
8、给两target配置不同的bundle i,再匹配不同的证书
到这里基本上配置好证书就可以直接打包啦!!!☺