讓同一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文件,圖片啊,都清理一下,這樣不同的版本,編譯出來大小就會是兩個版本的交集了。

發佈了74 篇原創文章 · 獲贊 1 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章