【转自CocoaChina】用同一个工程建立两个不一样版本的应用



Eat-Smart-513-2b.jpg

若是同一个应用, 须要作一个带广告Lite版本, 一个不带广告的Pro版本. 那么问题来了, 该如何优雅的去实现呢?
git

通常来讲有两种实现方法:github

  1. 一个把当前工程拷贝而后再修改, 这样作会致使后期维护成本太高, 每次修改都要同时改两个工程, 到后期修改简直提心掉胆, 不过操做傻瓜式.spa

  2. 另一个种就是在一个Project里面建立两个Target, 而后经过判断Target来修改代码, 这样都是基于同一套代码作修改, 只是部分不相同的地方经过Target来添加不一样代码, 后期修改维护成本低, 推荐你们使用这种方式..net

  • 不想看教程的童鞋, 点击这里能够下载我已经完成好的代码.设计

建立两个Target:code

1.首先先选中Target一个已经存在的版本, 右键 Duplicateorm

blob.png

2.而后在弹出来的选择框选择 Duplicate Only教程

blob.png

3.建立完以后你的新Target应该是和个人同样, 接下来咱们就要修改Target, Scheme, Info-plist, 如图这样修改:图片

blob.png

blob.png

4.修改完了以后Target, Scheme, plist的名字以后, 你须要在新的Target添加对应的plist文件, 修改CFBundleDisplayName就能够修改应用的名字了.ip

blob.png

blob.png

blob.png

5.还要记得修改一下Product Name 否则你的Bundle Identifier的后缀名有copy和你的Target名字不同, 你还须要在Bundle Setting作一下修改.

blob.png

开始为两个不一样的应用添加不一样的AppIcon, LaunchImage

在这个选择使用Images.xcassets里面设置AppIcon和LaunchImage, 注意这里一个是AppIcon,另外一个是AppIcon-2, 之后编译Target的时候他就会跟随这里的设置去拿了开机图和Icon

blob.png

blob.png

blob.png

2.进入Images.xcassets看下图片是否是都是勾选了两个Target, 保持和我下图同样的勾选, 若是没有勾选的话, 你在编译的不一样Target的时候会获取不到资源.

blob.png

3.选择不一样Target进行编译, 你的运行结果应该和个人截图同样, 有着不一样的AppName和AppIcon,还有不一样的LaunchImage,可是代码是共用, 到这里你已经成功了一半了, 接下来你确定是想知道如何在代码里面区别不一样Target, 而后给它们添加其余的特性.

blob.png

在代码里面利用宏定义来区分不一样的Traget

1.在Bundle Setting里面设置一下Proprecessor Macros添加一份KFREE  KPRO的参数来区分究竟是那个Traget. 在代码里面为须要用到这个宏去判断代码块.

blob.png

blob.png

2.在代码里面添加Proprecessor Macros里面宏定义, 你就会发现编译以前Xcode就会智能的选择不一样代码. 这样你就共用一个项目管理两个不一样版本的应用了, 大部分的代码都复用, 维护管理很是轻松.

blob.png

blob.png

总结:

苹果每一年都会推出新的技术, 都是为了减小开发成本和更好的设计, 做为开发者的开发模式应当和苹果的理念一致. 用最优雅, 简洁的方式去实现功能.

相关文章
相关标签/搜索