每個 App 項目可以有多個環境, 開發環境 、 測試環境 、 預發布環境 和 生產環境 ,至少有 開發環境 和 生產環境
研發同學和測試同學經常需要在環境間切換,產品同學有時候也會心血來潮的看看各種版本,也就是說,有時候需要測試版本,有時候又需要正式版本,我之前的做法就是每次切換 url ,然后重新打包,或者重新運行,超麻煩~
那么有沒有可能在一個手機直接裝多個版本吶?
答案肯定是有滴(否則還碼這篇文章干嘛吶~)
個人覺得最好的方案就是 ------ 環境分離 ,即不同的環境對應不同的 app
每個Target代表一個編譯的產品。每個Target,可以有不同的編譯源文件和資源文件。那么,實現環境分離的方案,就是分別建立測試環境和生產環境的兩個Target。默認的Target作為生產環境的Target,在此基礎上復制多一個Target作為測試環境的Target。
一個 app 只能有一個唯一標示, iOS 使用的是 Bundle Identifier , Android 使用的是包名,因此,在一個手機上安裝多個環境的 app ,只需要每個環境的 Bundle Identifier 或者包名不同即可, 一般做法是在后面添加環境后綴 ,比如生產環境為 com.shenfengfeng.myapp ,那么測試環境就可以為 com.shenfengfeng.myapp.alpha , app 名字會更新,當然也可以手動改,當然也還可以改圖標,用來在同一個手機上區分版本
但是這種做法有個不好的地方就是需要,需要針對不同的環境,申請,不同的第三方的 appKey 、 appSecret
那么是來回注釋,還是申請賬號,看自己取舍吧~
概述: iOS app 可以通過創建不同環境的Target來實現環境分離,不同Target可以設置不同的 bundle id 、名稱、圖標等。每個 target 也對應的 plist 文件
1、復制 target ,選中后右鍵,選擇 Duplicate

2、默認的名字為 **** copy

3、修改 target 和 bundle id ,需要注意的是,在修改 target 的名字后,需要切換到 Xcode 的其他地方(比如其他 target )后再切回來,然后 display name 會自動適配

4、項目結構里面會多一個默認 target 名字的 ***.plist 文件

5、 右鍵 show in finder ,將這個 plist 文件改名,并且移到項目的原本的 plist 文件的同級目錄,然后重新添加到項目中,注意選擇的 target

6、看下圖

7、因為移動了新的 target 的 plist 文件,所需要重新關聯到新的 plist 文件,關聯后隨意切換后會刷新

8、按著鍵盤 option ,點擊 Xcode 運行按鈕(左上方),然后點擊 Manage Schemes

9、重命名新創建 schemes

10、如圖

11、右鍵新建 AppIcon

12、選擇新的 target 對應的 AppIcon

13、關鍵步驟
設置了不同的 target 后,代碼上可以根據不同的 target 來做不同的處理,就需要知道,當前在編譯的是哪個 target
這可以通過,預編譯宏來區分,比如在 runtime alpha 的 target 的 Build Settings 中,在 Preprocessor Macros 中添加 FF_ALPHA
(也可以給 target runtime 設置 FF_ALPHA=0 ,給 runtime alpha 設置 FF_ALPHA=1 )

14、代碼中就可以如下判斷,依據實際情況
#ifdef FF_ALPHA#define FF_URL @"****"#elif ...#define FF_URL @"****"#else#define FF_URL @"****"#endif
15、結束,非常感謝看到這里的小伙伴,筆者感覺到很開心~
切換 Scheme 時候,遇到如下圖報錯
筆者將模擬器格式化后正常, Xcode 9.* ---> Hardware → Erase All Content and Settings...

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。
新聞熱點
疑難解答