(原創(chuàng))xcode XCBuildConfiguration自動配置

在iOS的項目開發(fā)以及學(xué)習(xí)過程中, 為了提高代碼質(zhì)量壳贪,我們經(jīng)常需要對默認的debug和release修改配置, 比如開啟編譯時自動進行靜態(tài)分析, 或者打開關(guān)閉不同的warning陵珍,或者開啟 treat warnings as errors 選項。但是每新建一個項目就要配置一次的話就有點太麻煩了违施,所以我就寫了一個簡單的腳本對指定的build configuration進行自動設(shè)置互纯。

1. 如何找到project.pbxproj

我在這里快速描述一下如何找到這個配置文件

在項目根目錄下的xxx.xcodeproject 其實就是一個文件夾。 選中后點擊右鍵磕蒲, 然后選擇show package contents 留潦, 就可以找到project.pbxproj只盹。

右鍵選擇 show package contents

即可看到project.pbxproj配置文件

2.如何解析project.pbxproj

關(guān)于這個配置文件的結(jié)構(gòu),請參考project.pbxproj兔院,最熟悉的”陌生人

這個文件的格式其實是比較特別的殖卑, 因此沒有辦法通過xml或者plist的方式進行解析。 不過前人栽樹坊萝,后人乘涼孵稽,早就有高手寫好了解析工具。在這里我選擇的是mod-pbxproj十偶, 一個python的解析庫菩鲜。

3. 實現(xiàn)思路

在打開project.pbxproj以后,我們可以發(fā)現(xiàn)里面的各個配置項目之間都是通過id來進行關(guān)聯(lián)的惦积,所以為了找到我們需要的XCBuildConfiguration接校, 只能從rootobject 一層一層往下找。

路徑如下:rootObject=> Project Object.buildConfigurationList =>?buildConfigurationList.buildConfigurations[]

這個數(shù)組包含了我們需要的debug 和release 的id荣刑。 通過這個id我們就可以取到對應(yīng)的XCBuildConfiguration dictionary馅笙。 剩下的工作就是按照我們的需要對dictionary進行設(shè)置伦乔。

4. Python 腳本

按照上節(jié)提到的思路厉亏,附上腳本如下, 通過從json文件中讀取配置烈和,然后設(shè)置到對應(yīng)的XCBuildConfiguration去爱只。

Python Script

使用方法:

GitHub

Git Clone 或者下載以下四個文件

在terminal運行以下命令即可

python xcode_auto_configurator.py YourProject.xcodeproj/project.pbxproj

也可以指定json配置文件(注意:json文件名要和XCBuildConfiguration的name一致,忽略大小寫招刹,單個文件或者多個文件皆可)

python xcode_auto_configurator.py YourProject.xcodeproj/project.pbxproj debug.json release.json

bebug.json 和release.json 是我自己比較喜歡的配置恬试,大家可以根據(jù)自己的需要自行修改

debug.json

{

"WARNING_CFLAGS":"-Wall -Wextra -Wno-unused-parameter -Wno-unused-variable",

"CLANG_ANALYZER_SECURITY_FLOATLOOPCOUNTER":"YES",

"CLANG_ANALYZER_SECURITY_INSECUREAPI_RAND":"YES",

"CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY":"YES",

"RUN_CLANG_STATIC_ANALYZER":"YES",

"GCC_TREAT_WARNINGS_AS_ERRORS":"NO"

}

release.json

{

"WARNING_CFLAGS":"-Wall -Wextra -Wno-unused-parameter -Wno-unused-variable",

"CLANG_ANALYZER_SECURITY_FLOATLOOPCOUNTER":"YES",

"CLANG_ANALYZER_SECURITY_INSECUREAPI_RAND":"YES",

"CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY":"YES",

"RUN_CLANG_STATIC_ANALYZER":"YES",

"GCC_TREAT_WARNINGS_AS_ERRORS":"YES",

"CLANG_STATIC_ANALYZER_MODE":"deep"

}

Tips: 如何找到想要的key

有人說如何找到我想要的設(shè)置的key和value呢,其實方法很簡單疯暑,在xcode手動設(shè)置號以后训柴,查看project.pbxproj即可。


如果設(shè)置了以后有任何問題妇拯, 你可以在對應(yīng)的xxx.xcodeproject下找到對應(yīng)的備份

最后建議大家在Xcode中打開這個continue building after errors?選項幻馁,這樣在日常的編程過程中會效率會高一些


話說我的python是為了寫這個腳本現(xiàn)學(xué)的,如果哪里有問題或者寫的不好越锈,歡迎指正仗嗦。

如需轉(zhuǎn)載,請保留署名

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末甘凭,一起剝皮案震驚了整個濱河市稀拐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌丹弱,老刑警劉巖德撬,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件铲咨,死亡現(xiàn)場離奇詭異,居然都是意外死亡蜓洪,警方通過查閱死者的電腦和手機鸣驱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蝠咆,“玉大人踊东,你說我怎么就攤上這事「詹伲” “怎么了闸翅?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長菊霜。 經(jīng)常有香客問我坚冀,道長,這世上最難降的妖魔是什么鉴逞? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任记某,我火速辦了婚禮,結(jié)果婚禮上构捡,老公的妹妹穿的比我還像新娘液南。我一直安慰自己,他們只是感情好勾徽,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布滑凉。 她就那樣靜靜地躺著,像睡著了一般喘帚。 火紅的嫁衣襯著肌膚如雪畅姊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天吹由,我揣著相機與錄音若未,去河邊找鬼。 笑死倾鲫,一個胖子當著我的面吹牛粗合,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播级乍,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼舌劳,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了玫荣?” 一聲冷哼從身側(cè)響起甚淡,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后贯卦,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體资柔,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年撵割,在試婚紗的時候發(fā)現(xiàn)自己被綠了贿堰。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡啡彬,死狀恐怖羹与,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情庶灿,我是刑警寧澤纵搁,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站往踢,受9級特大地震影響腾誉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜峻呕,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一利职、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧瘦癌,春花似錦猪贪、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至妄帘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間池凄,已是汗流浹背抡驼。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留肿仑,地道東北人致盟。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像尤慰,于是被迫代替她去往敵國和親馏锡。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 前言 2000年伟端,伊利諾伊大學(xué)厄巴納-香檳分校(University of Illinois at Urbana-...
    星光社的戴銘閱讀 15,894評論 8 180
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理杯道,服務(wù)發(fā)現(xiàn),斷路器责蝠,智...
    卡卡羅2017閱讀 134,651評論 18 139
  • afinalAfinal是一個android的ioc党巾,orm框架 https://github.com/yangf...
    passiontim閱讀 15,429評論 2 45
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,804評論 6 342
  • 百日閱讀第53天 分享人:55武漢雪舞 書名:瓦爾登湖 頁碼:101-105 在瓦爾登湖的日子里萎庭,梭羅并不把自己的...
    雪山飛狐兒閱讀 266評論 0 0