如何用同一个工程创建两个不同版本的应用

来源:互联网 发布:淘宝物流投诉怎么撤销 编辑:程序博客网 时间:2024/04/29 08:08

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

一般来说有两种实现方法:
  1. 一个把当前工程拷贝然后再修改, 这样做会导致后期维护成本过高, 每次修改都要同时改两个工程, 到后期修改简直提心掉胆, 不过操作傻瓜式.

  2. 另外一个种就是在一个Project里面创建两个Target, 然后通过判断Target来修改代码, 这样都是基于同一套代码做修改, 只是部分不相同的地方通过Target来添加不同代码, 后期修改维护成本低, 推荐大家使用这种方式.

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

• 创建两个Target:

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


屏幕快照 2015-08-14 下午9.46.26.png

2.然后在弹出来的选择框选择 Duplicate Only


屏幕快照 2015-08-14 下午9.46.43.png

3.创建完之后你的新Target应该是和我的一样, 接下来我们就要修改Target, Scheme, Info-plist, 如图这样修改:


屏幕快照 2015-08-14 下午9.47.18.png

Scheme的修改地方.png

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


屏幕快照 2015-08-14 下午9.48.47.png

屏幕快照 2015-08-14 下午9.49.01.png

屏幕快照 2015-08-14 下午9.50.08.png

5.还要记得修改一下Product Name 不然你的Bundle Identifier的后缀名有copy和你的Target名字不一样, 你还需要在Bundle Setting做一下修改.


屏幕快照 2015-08-14 下午10.15.12.png
• 开始为两个不同的应用添加不同的AppIcon, LaunchImage
  1. 在这个选择使用Images.xcassets里面设置AppIconLaunchImage, 注意这里一个是AppIcon,另一个是AppIcon-2, 以后编译Target的时候他就会跟随这里的设置去拿了开机图和Icon

    77F1268E-6961-402F-8E39-51B135B4563C.png

屏幕快照 2015-08-14 下午10.24.17.png

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


屏幕快照 2015-08-14 下午10.32.52.png

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


iOS Simulator Screen Shot 2015年8月14日 下午10.37.40.png
• 在代码里面利用宏定义来区分不同的Traget

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


屏幕快照 2015-08-14 下午11.35.43.png

屏幕快照 2015-08-14 下午11.35.34.png

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


屏幕快照 2015-08-14 下午11.37.44.png

屏幕快照 2015-08-14 下午11.37.55.png

总结:

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



0 0