【轉自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

總結:

蘋果每一年都會推出新的技術, 都是爲了減小開發成本和更好的設計, 做爲開發者的開發模式應當和蘋果的理念一致. 用最優雅, 簡潔的方式去實現功能.

相關文章
相關標籤/搜索