iOS 架构篇——多版本切换应用

GitHub 地址:KJMoreTargetDemo

前言

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


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

作者信息

Github地址:https://github.com/yangKJ
简书地址:https://www.jianshu.com/u/c84c00476ab6
博客地址:https://blog.csdn.net/qq_34534179

作者其他Pod库
/*
*********************************************************************************
*
*⭐️⭐️⭐️ ----- 本人其他库 ----- ⭐️⭐️⭐️
*
粒子效果、自定义控件、自定义选中控件
pod 'KJEmitterView'
pod 'KJEmitterView/Control' # 自定义控件

扩展库 - Button图文混排、点击事件封装、扩大点击域、点赞粒子效果,
手势封装、圆角渐变、倒影、投影、内阴影、内外发光、渐变色滑块等,
图片加工处理、滤镜渲染、泛洪算法、识别网址超链接等等
pod 'KJExtensionHandler'
pod 'KJExtensionHandler/Foundation'
pod 'KJExtensionHandler/Exception'
 
基类库 - 封装整理常用,采用链式处理,提炼独立工具
pod 'KJBaseHandler'
pod 'KJBaseHandler/Tool' # 工具相关
pod 'KJBaseHandler/Router' # 路由相关

播放器 - KJPlayer是一款视频播放器,AVPlayer的封装,继承UIView
视频可以边下边播,把播放器播放过的数据流缓存到本地,下次直接从缓冲读取播放
pod 'KJPlayer'  # 播放器功能区
pod 'KJPlayer/KJPlayerView'  # 自带展示界面

轮播图 - 支持缩放 多种pagecontrol 支持继承自定义样式 自带网络加载和缓存
pod 'KJBannerView'  # 轮播图,网络图片加载 支持网络GIF和网络图片和本地图片混合轮播

加载Loading - 多种样式供选择 HUD控件封装
pod 'KJLoading' # 加载控件

菜单控件 - 下拉控件 选择控件
pod 'KJMenuView' # 菜单控件

工具库 - 推送工具、网络下载工具、识别网页图片工具等
pod 'KJWorkbox' # 系统工具
pod 'KJWorkbox/CommonBox'

* 如果觉得好用,希望您能Star支持,你的 ⭐️ 是我持续更新的动力!
*
*********************************************************************************
*/
使用方法

#####一、创建两个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'引入即可

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值