1. 程式人生 > >APP配置多環境分發(一)

APP配置多環境分發(一)

        之前為公司做過一個關於內部業務流程的系統,最近多了些加盟商,加盟商內部同樣需要這套系統進行運轉,雖然APP的整體架構沒有任何改變,還是那套系統,但是一些細節改變了,包括但不限於APP名稱,APPIcon, URL, 介面上的一些文字,圖片等等,開始也沒有想太多,copy了3份程式碼獨立管理(請無視懶癌晚期),每次有bug,不用說,不停的畫輪子,浪費時間,沒有任何意義,最近企業賬號又下來了,3個APP,2個分發渠道,6個版本同時管理,實在無法忍受了,開始試著以切換scheme的方式來解決這個爛攤子。
       首先明白一點,我做的不是建立多個Target,而是一個Target下的多個scheme,今天並沒有將3個APP都完全整合,先整合進一個,如果成功了另一個也不成問題了。
    

       開啟目標工程,看Xcode左上角,工程預設只有1個scheme

       2種Build模式Debug和Release, 分別對應除錯和釋出兩種用途

    


  每種Configuration都有一個Configuration Set是因為我在工程裡使用了CocoaPods,如果沒有使用的話兩種配置應該都是空的。

  現在,我們點選Configurations下的加號按鈕“+”來新增配置,通過Duplicate DebugDuplicate Release來複制一份出來,等同於新增。


        2個APP,每個APP對應除錯環境和正式環境兩種Build方式,所以我們應該有4種Configuration,自己改好Configuration的名稱,做到自己一眼就能分辨出來,一般都是“APP名稱 + Debug/Release”的格式比較容易分辨。

       下面我們進入Project - BuildSetting - User-Defined

       User Defined下的內容無需理會,上方找到加號按鈕,點選後選擇Add User-Defined Seeting

      

      在User-Defined的下方找到未命名的標籤

      這個標籤下可以配置我們想要改變的環境變數的其中一種,而標籤的名字我們可以看做是一個變數,接下來會用到,首先我們先來配置Bundle ID,為了接下來的步驟我們便於找到這個變數,我們起名為BUNDLE_ID, 你會發現標籤下已經自動生成了我們定義好的4中configuration.


      我們在每一種configuration中填寫好自己需要的配置,設定APP名字的標籤我們可以命名為DISPLAY_NAME,然後對每種configuration依次配置好自己需要的值,這裡不再贅述。

      下面開啟Plist檔案,改變這些設定的值,將定值改為我們剛才定義好的變數名稱,BUNDLE_ID和DISPLAY_NAME,這樣,在build的時候,這兩項配置就會跟隨我們選擇的configuration而變化,當Bundle ID不同的時候,其實也就實現了生成兩個獨立的APP。

      

      

      下面我們新增新的APP的scheme,選擇new scheme

      

       選擇原工程的Target,為新的scheme命名


       新增好後,我們先點選新建的scheme,然後在下拉選單選擇Edit Scheme,分別在Run和Archive中選擇想生成的新APP對應的除錯設定和打包設定。


      接下來,在打包APP的時候通過選擇對應的Scheme就可以來選擇生成對應環境的app了。

     還有一點要注意,如果你在使用SVN,Git等協同工具,一定要在ManageScheme中將所有的自定義的scheme最後面的share勾選上,否則別人同步程式碼後是看不到的。

     後面還會針對不同APP的內部URL,文字,和圖片進行更改。