XUPorterUnity 到 Xcode 的依賴移植
XUPorter,a dependency porter from Unity to Xcode。XUPorter 可以讀取 Xcode 工程文件并進(jìn)行解析(再次感謝darktable的工作),之后在Unity工程的Assets目錄下尋 找所有的.projmods文件,并根據(jù)文件內(nèi)容向工程中添加文件或庫。
使用方法
將Github項(xiàng)目中的所有文件copy到Unity工程文件夾下的/Assets/Editor目錄中,XUPorter使用一個改良版的MiniJSON來 進(jìn)行。如果你的項(xiàng)目中已經(jīng)在使用這個MiniJSON了的話,可以直接將XUPorter文件夾下的MiniJSON文件夾刪掉;如果不一樣的話,你可以 選擇其中一個重構(gòu)一下或者加上命名空間來解決類名沖突。接下來,Mods文件夾下是示例文件以及需要導(dǎo)入Xcode的文件。在看完以后你需要把Mods文 件夾下的所有.projmods文件以及Mods/iOS文件夾下的內(nèi)容刪除或者替換為你所需要的內(nèi)容。
在這里提供了.unitypackege格式文件的下載,你也可以選擇下載打包好的文件并導(dǎo)入你的工程,之后的步驟和上面一樣。
.projmods文件是一個JSON格式的配置patch文件,定義了要如何設(shè)置Xcode工程。舉個基本的例子,比如KKKeychain.projmods:
{
"group": "KKKeychain",
"libs": [],
"frameworks": ["Security.framework"],
"headerpaths": [],
"files": [],
"folders": ["iOS/KKKeychain/"],
"linker_flags": [],
"excludes": ["^.*.meta$", "^.*.mdown$", "^.*.pdf$"]}
各參數(shù)定義如下:
-
group:所有由該projmods添加的文件和文件夾所屬的Xcode中的group名稱
-
libs:在Xcode Build Phases中需要添加的動態(tài)鏈接庫的名稱,比如libz.dylib
-
frameworks:在Xcode Build Phases中需要添加的框架的名稱,比如Security.framework
-
headerpaths:Xcode中編譯設(shè)置中的Header Search Paths路徑
-
files:加入工程的文件名
-
folders:加入工程的文件夾,其中所有的文件和文件夾都將被加入工程中
-
linker_flags:添加到工程linker flag中的鏈接配置,比如-ObjC
-
excludes:忽略的文件的正則表達(dá)式,匹配的文件將不會被加入工程中
更多的例子可以參看Mods文件夾中的其他projmods文件。所有的定義路徑都是基于當(dāng)前projmods文件位置的相對路徑。 最后,在完成projmods后,Unity會在編譯完成后,調(diào)用XCodePostProcess的OnPostProcessBuild來對編譯得到 的Xcode工程進(jìn)行修改。
之后進(jìn)一步要做的是為MiniJSON添加一個namespace,這樣可以避免不必要的沖突。
