天天看點

Xcode同一Project建立多個target

寫在前面

新年回來,終于迎來了新項目,由于我們開發的APP主要用于自己家公司員工使用的,是以呢,需求要求新開發的APP需要根據員工的職能的不同使用對應的APP,兩個APP界面相同,隻是為了區分不能職能,具體就不細說了,當時想,這需要做兩個APP嘛?就算copy的話也挺麻煩的啊,不偷懶的程式猿不是好程式猿,哈哈哈,這時我同僚一句話提醒了我:

target

利用Xcode的target建立兩個APP

既然是兩個APP的界面是一樣的,那麼就簡單很多了,簡單的來說就是建立一個新的項目之後,通過對原有的target做duplicate,複制一份,那接下來就記錄一下通過duplicate建立target的方法。

  • 假設原來的

    target

    名字為

    targetTestDemo

    ,我們需要建立一個

    targetTestDemo2

Xcode同一Project建立多個target

1.png

  • 在原來的target上右鍵,選擇

    duplicate

    Xcode

    會複制一個名為

    targetTestDemo copy

    target

    對象,(如上圖),同時會生成一個

    targetTestDemo copy-info.plist

    targetTestDemo copy

    scheme

    。選擇複制之後如下圖:
Xcode同一Project建立多個target

2.png

  • 箭頭所指的plist檔案是與新生成的target對應的檔案,需要更改兩個target對應的

    bundle name

    ,選中這個

    Target-info-plist name

    。更改圖示就在

    Images.xcassets

    中上傳兩套圖示,選中

    Target-Gernal-App Icons and Launch Images

    進行選擇。這樣兩個APP的名字和

    icon

    就都不一樣了。
  • 那麼怎麼在編寫程式的時候區分這連個APP呢?那就是編寫預編譯宏,用來區分兩個

    Target

    。選中

    Target-Bulid Settings-Preprocessor Macros

    分别給倆個Target添加兩個預定義宏First=1、Second=1:  
    Xcode同一Project建立多個target
    3.png
  • AppDelegate.m

    中加入條件判斷語句:
#if defined (MACRO)
//target  B需要執行的代碼
 #else
//target A需要執行的代碼
 #endif
           

在使用的時候根據宏定義的條件選擇來選擇對應APP需要處理的具體業務邏輯内容。通過如上設定就可以用一份代碼生成兩個不同的APP了。