xcode利用target實(shí)現(xiàn)多版本管理

在實(shí)際開發(fā)過程中戒努,會(huì)有很多相似版本的app開發(fā)煞烫,相似的app和主app絕大多數(shù)功能相同, 這個(gè)時(shí)候如何最有效的處理多版本app的開發(fā)西乖?

1:評(píng)估具體差異后確定是否拆分project還是通過拆分target
2:對(duì)于絕大多數(shù)功能相似的情況松靡,采用多Target編譯方案來實(shí)現(xiàn)更有效率简僧。
3:如果使用拆分project,需要選擇大小合適的粒度去抽取app的公共的功能模塊雕欺。

多target在不修改代碼的情況下如何解決版本差異

思路主要是修改target的編譯文件岛马,同一個(gè)文件名去對(duì)應(yīng)不同路徑下的文件進(jìn)行編譯棉姐,這樣做的好處就是無需改一行代碼,通過設(shè)置target就可以做的不同target對(duì)應(yīng)不同的代碼和資源文件

修改資源文件引用

選擇對(duì)應(yīng)的target -> build phases -> copy bundle resouces 修改指定版本對(duì)應(yīng)的圖片路徑啦逆。

通過這種方式能解決不同版本編譯出來的appui界面對(duì)應(yīng)的差異伞矩。

此外,修改還可以修改不同targets對(duì)應(yīng)不同的圖標(biāo)icon和啟動(dòng)畫面

1:Asset xcassets -> App Icons & launch Images -> New Ios App Icon   
2:general -> App Icons & launch Images -> 選擇對(duì)應(yīng)的icons和啟動(dòng)images

修改源代碼引用

選擇對(duì)應(yīng)的target -> build phases -> compile source 修改指定版本對(duì)應(yīng)編譯文件路徑夏志。

通過這種方式能解決不同版本編譯出來的app代碼的差異

也可以通過xcode屬性菜單中選擇文件所屬的target乃坤,這種方式更快捷一些。

修改pch文件的引用

可以定義多個(gè)pch文件盲镶,并在target -> build setting -> prefix header,修改不同target對(duì)應(yīng)的pch文件路徑

其他

此外還可以設(shè)置target對(duì)應(yīng)不同的項(xiàng)目和庫文件侥袜,啟動(dòng)前腳本等方式蝌诡,實(shí)現(xiàn)版本差異

修改代碼解決版本差異

這種方式解決不同target更直接,不用改動(dòng)整個(gè)文件溉贿,只需要對(duì)應(yīng)改動(dòng)部分代碼段就好了,我們利用xcode target中的preprocessor macros來實(shí)現(xiàn).

選擇對(duì)應(yīng)的target -> build setting -> preprocessor macros浦旱,定義對(duì)應(yīng)版本的宏宇色,然后再代碼中判斷宏,處理不同代碼邏輯颁湖。這種方式并不是常規(guī)做法宣蠕,簡單,最適合做開關(guān)控制甥捺。

例子

1:在preprocessor macros中添加一個(gè)鍵抢蚀,IS_XG=1
2:在代碼中判斷是否有這個(gè)開關(guān)

//打印ccsc版本信息
#ifdef  IS_XG
    NSLog(@"ccsc星光版本");
#else
    NSLog(@"不是ccsc星光版本");
#endif

注意點(diǎn)

  • 1.當(dāng)你將新文件添加到項(xiàng)目時(shí),別忘了同時(shí)選擇多個(gè)Targets镰禾,保持代碼在兩個(gè)版本中同步皿曲。
  • 2.如果你使用Cocoapods,別忘了將新的target添加到podfile吴侦。你可以使用 link_with來指定多個(gè)targets屋休。你可以進(jìn)一步查詢Cocoapods documentation了解更多細(xì)節(jié)。你的podfile看起來應(yīng)該像這樣
platform :ios, '7.0'  
workspace 'xxx'  
link_with 'target1', 'target2'  
pod 'xxx'  

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末备韧,一起剝皮案震驚了整個(gè)濱河市劫樟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌织堂,老刑警劉巖叠艳,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異易阳,居然都是意外死亡附较,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門闽烙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來翅睛,“玉大人声搁,你說我怎么就攤上這事〔斗ⅲ” “怎么了疏旨?”我有些...
    開封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長扎酷。 經(jīng)常有香客問我檐涝,道長,這世上最難降的妖魔是什么法挨? 我笑而不...
    開封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任谁榜,我火速辦了婚禮,結(jié)果婚禮上凡纳,老公的妹妹穿的比我還像新娘窃植。我一直安慰自己,他們只是感情好荐糜,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開白布巷怜。 她就那樣靜靜地躺著,像睡著了一般暴氏。 火紅的嫁衣襯著肌膚如雪延塑。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天答渔,我揣著相機(jī)與錄音关带,去河邊找鬼。 笑死沼撕,一個(gè)胖子當(dāng)著我的面吹牛宋雏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播端朵,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼好芭,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了冲呢?” 一聲冷哼從身側(cè)響起舍败,我...
    開封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎敬拓,沒想到半個(gè)月后邻薯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡乘凸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年厕诡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片营勤。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡灵嫌,死狀恐怖壹罚,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情寿羞,我是刑警寧澤猖凛,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站绪穆,受9級(jí)特大地震影響辨泳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜玖院,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一菠红、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧难菌,春花似錦试溯、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽烫饼。三九已至猎塞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間杠纵,已是汗流浹背荠耽。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留比藻,地道東北人铝量。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像银亲,于是被迫代替她去往敵國和親慢叨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

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