Unity編譯iOS工程的自動(dòng)化配置(XUPorter)

背景

通過(guò)Unity3d生成Xcode工程后:

打開(kāi) Unity-iPhone.xcodeproj幌蚊,每次都需要手動(dòng)添加一些配置選項(xiàng),比如

  1. 需要添加項(xiàng)目中使用的系統(tǒng)庫(kù)


所以就需要每次都手動(dòng)添加系統(tǒng)庫(kù):

  1. bitcode配置
    低版本的unity(5.3.2以下)是不支持bitcode的闲礼,但是高版本的Xcode(7.0以上)默認(rèn)是支持bitcode芒澜,這樣他們就有沖突


所以就需要每次都關(guān)閉bitcode

  1. HTTP的支持
    iOS9后,默認(rèn)只支持HTTPS的網(wǎng)絡(luò)請(qǐng)求骇窍,那么HTTP怎么辦祥诽?所以就需要每次都手動(dòng)修改ATS


  2. 其他項(xiàng)目配置


這樣問(wèn)題就來(lái)了:

  1. 如果配置太多,修改的地方太多,產(chǎn)品使用起來(lái)就相當(dāng)不方便
  2. 每次build后身腻,都需要重新配置产还,太浪費(fèi)時(shí)間了
    所以希望能有一個(gè)自動(dòng)配置的方式,那就再好不過(guò)了嘀趟。
    解決方案:
    這里有一個(gè)開(kāi)源的項(xiàng)目:XUPorter脐区,a dependency porter from Unity to Xcode。

XUPorter是一個(gè)開(kāi)源的Unity3D編譯Xcode工程的依賴管理工具她按。它能夠在Unity3D生成Xcode工程文件后,根據(jù)配置文件自動(dòng)添加依賴庫(kù)和引用文件的工具牛隅。它使用PostProcessBuild標(biāo)簽,在編寫(xiě)后尋找配置文件并修改Xcode工程文件,完全運(yùn)行于Unity3D編輯器中,而不需要涉及PostprocessBuildPlayer的腳本編寫(xiě)和調(diào)試,十分方便尤溜。
XUPorter的適用版本Unity3.5及以上,以及Xcode4.x以上倔叼。(Unity4.x及Xcode5中亦能工作正常)
原理
在Unity3.5中汗唱,加入了一個(gè)很棒的標(biāo)簽——[PostProcessBuild]宫莱,被該標(biāo)簽標(biāo)注的函數(shù)將自動(dòng)在build player后被調(diào)用,這為大家提供了一個(gè)不需要用腳本和命令行就能添加或修改編譯得到的工程的絕好的入口哩罪。

從上面可以看到授霸,XUPorter是從Unity3.5開(kāi)始支持的,支持到Xcode4.x和Xcode5际插,并且作者幾年前已經(jīng)開(kāi)始不維護(hù)了碘耳,所以對(duì)于新的版本,我們需要做一些修改


  1. XUPorter標(biāo)準(zhǔn)的配置



    添加動(dòng)態(tài)鏈接庫(kù)(僅僅限于dylib文件, Xcode7的tbd不支持)框弛,添加frameworks辛辨,以及"linker_flags"這些常用的配置都有了,但Xcode7后的新特性并不支持.

XUPorter常量定義


  1. bitcode
    Xcode7出現(xiàn)的bitcode特性瑟枫,Unity5.3.2版本才開(kāi)始支持斗搞,所以在之前的版本需要主動(dòng)設(shè)置為NO。



    效果如下:


  2. HTTP
    Unity 5.2.1開(kāi)始支持HTTP的設(shè)置慷妙,在之前的版本僻焚,需要修改Plist文件,主動(dòng)添加上HTTP的支持
    手動(dòng)添加方式
    (1) 在Info.plist中添加NSAppTransportSecurity
    類型Dictionary
    膝擂。
    (2) 在NSAppTransportSecurity
    下添加NSAllowsArbitraryLoads
    類型Boolean
    ,值設(shè)為YES

XUPorter的源代碼虑啤,XCPlist文件在windows下運(yùn)行會(huì)crash,所以最好都在MAC下操作架馋。再mod文件中添加對(duì)HTTP的設(shè)置


  1. 其他配置選項(xiàng)



    效果如下:


注意事項(xiàng):

  1. XUPorter必須在MAC下運(yùn)行,因?yàn)樽詣?dòng)添加的framework狞山、tbd路徑等,只有在MAC下才能配置正確
  2. Unity5后,舊的XUPorter代碼在projmods文件的 "libs"中添加“l(fā)ibz.tbd”不起效果叉寂,需要在"linker_flags"中添加"-lz"才行;不過(guò)新的XUPorter代碼已經(jīng)添加了對(duì)tbd文件的支持萍启,由于其他作者的努力。
  3. 對(duì)里面Bool類型的設(shè)置,也是字符串的形式, 大寫(xiě)的"YES"對(duì)應(yīng)Yes;大寫(xiě)的"NO"對(duì)應(yīng)No
    4.Unity中如果選擇mono的話办绝,能捕獲除零異常伊约,NullReferenceException由于會(huì)觸發(fā)iOS底層的signal異常姚淆,所以APP會(huì)崩潰;但如果是IL2CPP模式,NullReferenceException能通過(guò)C#捕獲屡律,程序不會(huì)崩潰腌逢,除零異常不會(huì)觸發(fā)。
  4. unity5.0.1: Default scripting backend is set to IL2CPP on iOS
  5. unity在OSX El Capitan(10.11)下超埋,build iOS項(xiàng)目時(shí)會(huì)crash


官方說(shuō)是在 4.6.9已經(jīng)修復(fù)搏讶,但在5.0.0以及接下來(lái)的多個(gè)版本還是存在這個(gè)問(wèn)題,unity5后到底哪個(gè)版本修復(fù)了霍殴,版本太多無(wú)法驗(yàn)證媒惕,最新的5.3.4是OK的。
iOS: Fixed crash while building iOS project on El Capitan.

參考:

  1. Unity3D研究院之IOS全自動(dòng)編輯framework来庭、plist妒蔚、oc代碼
  2. http://project.onevcat.com/
  3. https://github.com/onevcat/XUPorter
  4. https://onevcat.com/2012/12/xuporter/
  5. xcode工程文件格式(Xcode Project File Format)詳解



0


0

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市月弛,隨后出現(xiàn)的幾起案子肴盏,更是在濱河造成了極大的恐慌,老刑警劉巖帽衙,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件菜皂,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡厉萝,警方通過(guò)查閱死者的電腦和手機(jī)恍飘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)谴垫,“玉大人章母,你說(shuō)我怎么就攤上這事〉妫” “怎么了胳施?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)肢专。 經(jīng)常有香客問(wèn)我舞肆,道長(zhǎng),這世上最難降的妖魔是什么博杖? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任椿胯,我火速辦了婚禮,結(jié)果婚禮上剃根,老公的妹妹穿的比我還像新娘哩盲。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布廉油。 她就那樣靜靜地躺著惠险,像睡著了一般。 火紅的嫁衣襯著肌膚如雪抒线。 梳的紋絲不亂的頭發(fā)上班巩,一...
    開(kāi)封第一講書(shū)人閱讀 51,554評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音嘶炭,去河邊找鬼抱慌。 笑死,一個(gè)胖子當(dāng)著我的面吹牛眨猎,可吹牛的內(nèi)容都是我干的抑进。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼睡陪,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼寺渗!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起宝穗,我...
    開(kāi)封第一講書(shū)人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤户秤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后逮矛,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡转砖,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年须鼎,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片府蔗。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡晋控,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出姓赤,到底是詐尸還是另有隱情赡译,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布不铆,位于F島的核電站蝌焚,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏誓斥。R本人自食惡果不足惜只洒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望劳坑。 院中可真熱鬧毕谴,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至舀武,卻和暖如春惧浴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背奕剃。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工衷旅, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人纵朋。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓柿顶,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親操软。 傳聞我的和親對(duì)象是個(gè)殘疾皇子嘁锯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

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