iOS用同一個工程建立兩個不同版本的應用

來源:互聯網
上載者:User

標籤:

http://www.cocoachina.com/ios/20150916/13324.html

 

如果同一個應用, 需要做一個帶廣告Lite版本, 一個不帶廣告的Pro版本. 那麼問題來了, 該如何優雅的去實現呢?

一般來說有兩種實現方法:

  1. 一個把當前工程拷貝然後再修改, 這樣做會導致後期維護成本過高, 每次修改都要同時改兩個工程, 到後期修改簡直提心掉膽, 不過操作傻瓜式.

  2. 另外一個種就是在一個Project裡面建立兩個Target, 然後通過判斷Target來修改代碼, 這樣都是基於同一套代碼做修改, 只是部分不相同的地方通過Target來添加不同代碼, 後期修改維護成本低, 推薦大家使用這種方式.

  • 不想看教程的童鞋, 點擊這裡可以下載我已經完成好的代碼.

建立兩個Target:

1.首先先選中Target一個已經存在的版本, 右鍵 Duplicate

2.然後在彈出來的選擇框選擇 Duplicate Only

3.建立完之後你的新Target應該是和我的一樣, 接下來我們就要修改Target, Scheme, Info-plist, 這樣修改:

4.修改完了之後Target, Scheme, plist的名字之後, 你需要在新的Target添加對應的plist檔案, 修改CFBundleDisplayName就可以修改應用的名字了.

5.還要記得修改一下Product Name 不然你的Bundle Identifier的尾碼名有copy和你的Target名字不一樣, 你還需要在Bundle Setting做一下修改.

開始為兩個不同的應用添加不同的AppIcon, LaunchImage

在這個選擇使用Images.xcassets裡面設定AppIcon和LaunchImage, 注意這裡一個是AppIcon,另一個是AppIcon-2, 以後編譯Target的時候他就會跟隨這裡的設定去拿了開機圖和Icon

2.進入Images.xcassets看片是不是都是勾選了兩個Target, 保持和我一樣的勾選, 如果沒有勾選的話, 你在編譯的不同Target的時候會擷取不到資源.

3.選擇不同Target進行編譯, 你的運行結果應該和我的一樣, 有著不同的AppName和AppIcon,還有不同的LaunchImage,但是代碼是共用, 到這裡你已經成功了一半了, 接下來你肯定是想知道如何在代碼裡面區別不同Target, 然後給它們添加其他的特性.

在代碼裡面利用宏定義來區分不同的Traget

1.在Bundle Setting裡面設定一下Proprecessor Macros添加一份KFREE  KPRO的參數來區分到底是那個Traget. 在代碼裡面為需要用到這個宏去判斷代碼塊.

2.在代碼裡面添加Proprecessor Macros裡面宏定義, 你就會發現編譯之前Xcode就會智能的選擇不同代碼. 這樣你就共用一個專案管理兩個不同版本的應用了, 大部分的代碼都複用, 維護管理非常輕鬆.

總結:

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

  

iOS用同一個工程建立兩個不同版本的應用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.