博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用同一个工程创建两个不同版本的应用
阅读量:6327 次
发布时间:2019-06-22

本文共 1966 字,大约阅读时间需要 6 分钟。

Eat-Smart-513-2b.jpg

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

 

一般来说有两种实现方法:

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

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

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

创建两个Target:

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

blob.png

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

blob.png

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

blob.png

blob.png

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

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

总结:

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

#ifdef LITE_VERSION    //Stuff for Lite version    NSLog(@"222222222");#else    //Stuff for Full version    NSLog(@"333333333");#endif    #ifndef LITE_VERSION    //Code exclusively for Full version    NSLog(@"444444444");#endif    #if LITE_VERSION    NSLog(@"555555555");#elif PROJECT    NSLog(@"666666666");#endif
//SampleProject 2016-05-03 17:12:00.793 SampleProject[5100:295192] 3333333332016-05-03 17:12:00.794 SampleProject[5100:295192] 4444444442016-05-03 17:12:00.794 SampleProject[5100:295192] 666666666
//SampleProject Lite 2016-05-03 17:12:32.718 SampleProject Lite[5112:296122] 2222222222016-05-03 17:12:32.719 SampleProject Lite[5112:296122] 555555555

 

转载地址:http://zrgaa.baihongyu.com/

你可能感兴趣的文章
是男人就下100层【第二层】——帮美女更衣(1)
查看>>
Web应用程序设计十个建议
查看>>
//……关于报文
查看>>
C语言学习-进制转换、变量
查看>>
Base64编码及其作用
查看>>
20172304 2017-2018-2 《程序设计与数据结构》实验五报告
查看>>
第六周学习总结
查看>>
20个数据库设计的最佳实践
查看>>
C# async
查看>>
C语言博客作业02--循环结构
查看>>
图片时钟
查看>>
Unity-2017.3官方实例教程Space-Shooter(一)
查看>>
makefile中重载与取消隐藏规则示例
查看>>
Linux 内核版本号查看
查看>>
4-3 简单求和 (10分)
查看>>
Python环境部署
查看>>
[BZOJ1927]星际竞速(费用流)
查看>>
PowerDesigner添加表注释
查看>>
使用VMware安装Ubuntu虚拟机,创建后开启显示黑屏的解决方法
查看>>
Java数据结构与算法(11) - ch06递归(二分法查找)
查看>>