iOS 同一个工程创建不同的多版本切换应用

语言: CN / TW / HK

前言

很多时候我们可能会有用户版和管理员版,但是他们之间很多代码通用,这是就可以采用这种方式去处理
同工程里面创建两个Target,然后通过判断Target来修改代码,这样都是基于同一套代码做修改,只是部分不相同的地方通过Target来添加不同代码,后期修改维护成本低

GitHub 地址:KJMoreTargetDemo


* 啤酒Demo 和 鱼Demo 就是两个对应的项目

使用方法

一、创建两个Target

1、拷贝一份新的Target

WX20191024-151959@2x.png

2、修改不同Target对应的不同的 Scheme、info.plist等等数据

Build Settings当中Packaging设置info.plist路径


二、为两个不同的应用添加不同的AppIcon和LaunchScreen.storyboard

1、进入Assets.xcassets 右键创建不同的AppIcon

WX20191024-162335@2x.png

* 这边需要把两者都勾选上,否则会出现编译的不同Target的时候会获取不到资源的情况 WX20191024-163406@2x.png

2、创建不同的LaunchScreen.storyboard

WX20191024-162722@2x.png

保存在相对应的Target当中

WX20191024-162908@2x.png

3、选择相对应的AppIcon和LaunchScreen.storyboard

* KJMoreTargetDemo对应的AppIcon和LaunchScreen.storyboard WX20191024-162131@2x.png

* KJMoreTargetDemo copy对应的AppIcon-2和LaunchScreen2.storyboard WX20191024-163127@2x.png

4、选择不同的Target运行项目


三、代码里面利用宏定义来区分不同的Traget

1、在Bundle Setting里面设置一下Proprecessor Macros添加一份TARGETTARGET2的参数来区分到底是那个Traget

* KJMoreTargetDemo对应的Proprecessor Macros WX20191024-164811@2x.png

* KJMoreTargetDemo copy对应的Proprecessor Macros WX20191024-164828@2x.png

备注:TARGET 和 TARGET2 后面代码块里面会使用到

2、代码里面用上面的宏去判断代码块

解决需要不同处理方式,则用下面这一组宏

#if TARGET
    /// KJMoreTargetDemo当中的代码块实现
    KJTargetViewController *vc = [KJTargetViewController new];
    [self.navigationController pushViewController:vc animated:YES];
#elif TARGET2
    /// KJMoreTargetDemo copy当中的代码块实现
    KJTargetViewController2 *vc = [KJTargetViewController2 new];
    [self.navigationController pushViewController:vc animated:YES];
#endif
复制代码

多版本介绍就到此完毕,后面有相关再补充,写文章不容易,还请点个**小星星**传送门

备注:本文用到的部分函数方法和Demo,均来自三方库**KJExtensionHandler**,如有需要的朋友可自行pod 'KJExtensionHandler'引入即可