xcode根據不同的targets控制不同版本的APP

在開發(fā)過程中,需要同時處理小屏和橫屏不同版本的APP。通過以下步驟,即可實現(xiàn)。由于工程中嵌套了一個子工程,因此子工程和本工程都需要做相應的操作。
1、子工程中,分別右鍵其中每個TARGETS的名稱-->Duplicate,生成的名稱為原名稱加上“copy”字樣的名稱。點擊兩下KSPassport、KSPassportResource重命名為KSPassport_FullScreen、KSPassportResource_FullScreen.
子工程中復制生成targets效果圖如下:


原子工程TARGETS.png
復制子工程TARGETS后生成的文件目錄.png

2、本工程中,復制生成新的應用,并修改其名稱


本工程原TARGETS目錄.png
本工程復制后生成的TARGETS目錄.png
本工程生成的.app文件.png

3、點擊本工程名稱-->Manage Scheme,點擊修改相應的文件名稱


設置Scheme的入口.png
修改名稱.png

4、在代碼中根據全局的宏定義來分別處理兩個版本。在子工程中,全局宏定義如下圖所示,在小屏時設置一個NONFULLSCREEN的參數,在橫屏時無需設置此宏定義參數。

子工程的小屏設置一個宏定義參數.png

代碼區(qū)分如下:

{
          #if defined (NONFULLSCREEN)
                 //小屏代碼處理  
          #else
                 //橫屏代碼處理     
          #endif 
}

注意:代碼處理過程中要加載不同的bundle,因此也需要根據該宏定義參數進行區(qū)分。
5、在本工程中,根據兩個應用的不同加載不同的Target Denpendencies,如圖:

小屏.png

橫屏.png

運行程序時,選擇不同的應用即可區(qū)分開兩個APP.
6、在本工程中,由于是直接復制應用的,因此其Build里的參數都是一樣的。所以需要將橫屏里的build參數進行修改,主要有以下兩項,在Build Phases中:
Link Binary With Libraries中的libKSPassport.a,換成libKSPassport_FullScreen.a
Copy Bundle Resources中的KSPassportResource.bundle換成KSPassportResource_FullScreen.bundle

7、最后可以根據需要,在子工程中的資源里面選擇各自所需要的資源,刪掉不必要的資源文件。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,094評論 25 709
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,578評論 19 139
  • 小時候家里的院子里種著滿院的花,有月季,有大理花,有鳳仙花,有做飯花,還有那攀爬的葡萄架。 爸爸買了很多關于養(yǎng)花的...
    薛小曼閱讀 276評論 0 0
  • 人人都具備寫文章的能力,你知道嗎? 我從小學寫作文就特別不好,從而也不感興趣,甚至討厭,一到作文課不是找借口頭疼 ...
    瑄瑄love閱讀 239評論 0 0
  • 枚舉的定義和使用 console log 如下 關聯(lián)值 console log 如下 枚舉的初始值 console...
    點滴86閱讀 277評論 0 0

友情鏈接更多精彩內容