一、release與debug模式
Debug和Release僅僅是編譯選項的不同,那么為什么要區分Debug和Release版本呢?
Debug和Release,主要是針對其面向的目標不同的而進行區分的。
Debug通常稱為調試版本,通過一系列編譯選項的配合,編譯的結果通常包含調試信息,而且不做任何優化,為開發人員提供強大的應用程序調試能力。
而Release通常稱為發布版本,是為用戶使用的,一般客戶不允許在發布版本上進行調試。所以不保存調試信息,同時,它往往進行了各種優化,以期達到代碼最小和速度最優。為用戶的使用提供便利。
我們說一下在xcode上怎么配置debug和release。
1. 配置
首先為了讓debug和release的區別更加明顯,我們會給各自一個option,這樣我們可以保證在debug中輸出的log,到了release就看不到了。
比如下圖的-DMY_DEBUG -DMY_RELEASE,到了代碼里面如下實現
#ifdef MY_DEBUG
NSLog(@"debug version")
#endif
2. 運行
再次我們可以配置debug和release,那編譯的時候怎么選擇是用debug還是release,答案如下(通過product-》edit scheme調出)
二、Build Configuration
Xcode默認會有2個編譯模式,一個是Debug,一個是Release。
Release下不能調試程序,編譯時有做編譯優化,會比用Debug打包出來的運行快,另外包也會更小。
使用場景
我自己碰到的使用場景是,我司的域名有3套:
針對開發時的域名
針對預上線時的域名
針對上線時對外公開的域名
這個時候,就會有多套域名,全部加起來可能有15個左右。每次打包時,就會特別混亂。(注釋掉現在使用的域名,打開原本注釋掉的那部分,出差錯的可能蠻高的,而且不利於閱讀)
這個時候,我們就使用它來針對3個環境下不同域名做配置。
配置Build Configuration
1. 添加Configuration
這里我們添加DEVELOP、BETA、保留原有的(release)。這里我們選擇直接duplicatte Debug的配置,因為Release的不能做斷點調試。
2. 查看Configuration
添加完第1步的Configuration之后,在Edit Scheme里就會看到新添加的配置項
3. 更改Preprocessor Macros
第1步里我們直接復制了Debug的配置項,那這里的值就會有問題,需要自己設置。
4. 在程序里配置對應的Configuration下不同域名
也可以這樣使用
5. 測試
運行程序,修改Scheme下不同的Configuration,就能得到不同的值,那結果就是正確的了。
三、基於以上的實驗,app還可以在不同環境下配置不同的AppIcon和AppName
AppIcon
使用Asset Catalog,分別給三種環境下配置3個名字
AppIcon
AppIconDEVELOP
AppIconBETA
然后去Target - Build Settings里搜索Asset Catalog App Icon Set Name這一項
App Name
Target - Build Settings里點+號,添加一個User-Defined Setting
比如我們請一個叫APP_DISPLAY_NAME的key值,下面BETA叫BETA,DEVELOP叫DEVELOP, Release還是用系統原配置。
進到Target - Info里,修改Bundle name為$(APP_DISPLAY_NAME)
運行結果
打包配置
這幾天我們做了一件很蠢的事,把開發用的環境打包發給了Apple。
為了彌補這件事,順便規范以后的打包問題,於是做了一些配置上的補救。
查了下Apple的文檔,原來可以配置,我將Release環境以外的Skip Install配置成NO,就不會Archive出ipa了。
參考文章:
1、http://www.51testing.com/html/93/352093-844586.html
2、 ios 學習之 debug和release版本的運行
3、 IOS-40-測試環境與正式環境的代碼通過標示符來區分
4、http://www.jianshu.com/p/51a2bbe877aa
————————————————
版權聲明:本文為CSDN博主「江湖hi客」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/gongwutianya/article/details/52205192