让同一iphone项目能编译两个版本--正式版、lite版

让同一iphone项目能编译两个版本--正式版、lite版

博客原文地址: 在同一iphone项目添加lite版


在同一iphone项目添加lite版(二)







作为基本的推广手段,缩减关键功能,增加ADMob或iAD的lite版应用是必要的。
但为了lite单纯另开一个项目,不断在在lite和完整版项目中同步代码,肯定是不行的,最好的办法,就是在同一个xcode project中添加一个Target。
步骤如下:
1、在左边的Groups&Files窗口中找到Target节点
2、在原来的Target上点右键,选Duplicate
3、将复制出来的新Target Rename为yourappname-lite
(Target名我隐藏掉先)
4、对应的,在项目下的Resources目录下会添加一个 yourappname-info copy.plist,将它重命名为yourappname-lite-info.plist
5、打开Project菜单,Set Active Target 为lite



6、再选择下面的Edit Active Target "*****name-lite"菜单 
7、在打开的表单中,修改以下值:
 7.1 Product Name --> yourappname-lite
 7.2 Info.plist file   --> yourappname-lite-Info.plist
 7.3 Preprocess Macros  --> LITE_VERSION  (这里是为编译器设置一定预定义的值,这样的话,在代码中可以用这个值来判断,当前是完全版或者lite版) 
8、搞完后,把xcode关掉,再打开项目,这一步一定要做,看能不能编译,并在模拟器中跑出第二个应用,如果不行,根据提示可能会要拷出拷入些文件,每次都重启下xocde的项目
9、能跑起来后,通过如下代码,为不同版本提供不同功能:
#ifdefined(LITE_VERSION)UIAlertView *alertVersion =[[UIAlertView alloc] 
                                 initWithTitle:nil 
                                 message:
@"This is lite version"delegate:nil 
                                 cancelButtonTitle:
@"cancel" 
                                 otherButtonTitles:nil];
    [alertVersion show];
    [alertVersion release];

#endif
如果想更加彻底的对两个版本做一些区别,比如两个版本包中的文件不一样,两个版本加载的库不一样(比如正式版就不用加载AdMob模块),程序一开始的入口就不一样,该怎么办呢?

  1. 在上一集中,我们Duplicate出了一个xx-lite的Target,也Copy出了一个xx-lite-info.plist(注意,plist和引用的外部.a文件是不用包进Target里的Copy Bundle Resources里的,否则会在编译时,出现一些莫名的Warnning,如果包进去了,请在左侧的Groups&Files窗口中展开你的Target,找到删除之),打开plist文件,里面有一项“Main nib file base name”,将值改一下,比如MainWindow-Lite。这样,程序启到时,加载的就不是原来的MainWindow,而是另一个MainWindows-Lite.xib文件了。然后,通过Copy或手工的方式,把原来的MainWindows和xxxAppDelegate.m复制一份出来,命令改成相应的xx-Lite。打开MainWindows-Lite.xib,将里面的xxx APP Delegate对象的Type改成 xxxAppDelegate_lite,这样的话,程序一开始加载的AppDelegate也不同了。然后再去改你的AppDelegate_lite.m,比如添加AdMob功能之类,如果View也要变,把ViewController换掉都随你了,反正,从xib到后端代码的入口,你都可以控制。还是在Target的界面里,把不同版本不需要的.a文件啊,.m文件,图片啊,都清理一下,这样不同的版本,编译出来大小就会是两个版本的交集了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值