支持原創,原文地址:www.KentonYu.com
每次開始一個新項目,大家都是怎么搭項目框架的?我只知道下面這兩種方法,歡迎大家補充~
- 通過從Git/SVN上pull公司的項目框架,修改相關配置文件。
- command+c 、 command+v ??
- 所有的公有組件都做成私有pods庫?好像也可以凸-凸
The first one感覺效率已經很高了吧。我只要<code>git clone</code>,修改下工程名,搞定。但是我們回頭想想,假如我們約定的是每個項目內的文件都統一前綴。GG。所有class手動rename。。。。。。。
好,終于rename完成了。咦,那個文件頭部版權信息怎么辦,跟我的工程名不一樣呀,哎呀,有一些連公司名都不一樣,這樣的code怎么show出去。感覺就給人一種代碼搬運工的feel~~(當然第三方的當然不能去改人家的版權信息昂)
second one 同上,更累點
The third one,倒也可以吧,實際沒有操作過,但是版權信息的問題還是變不了滴~~而且自己所有可復用的組件都打成Pods庫,想想也不簡單吧。
好吧,我說完了,個人見解QAQ,回到主題——通過Xcode 的Project Template 創建項目。
大家可以到這個目錄底下(<code>/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project Templates/iOS/Application/Single View Application.xctemplate/TemplateInfo.plist</code>),看下<code>TemplateInfo.plist</code>這個plist文件。這個文件就是Project Template的配置文件。我們先來了解下這個plist中的主要的幾個key。
- Kind:required key。這個key的value不會從父模板繼承下來,所以自己定義的一個新模板,必須設置Kind,當設置錯誤或者不設置將會導致你不能在創建工程的時候看到你的模板或者創建的時候Xcode crash,Kind有以下幾種類型:
類型 | 描述 |
---|---|
Xcode.Xcode3.ProjectTemplateUnitKind | 指定該模板是工程模板 |
Xcode.IDEFoundation.TextSubstitutionFileTemplateKind | 指定該模板是文件模板 |
more | more |
Identifier:required key。唯一標識。不能重復。For example: com.yourcompany.yourtemplate.templatename。
Ancestors:該模板的父類。可以自己選擇繼承一個或多個。具體可以看Xcode自帶模板Identifier。
Concrete:該Key設置為YES的模板才可以顯示在new project的dialog中,此時這個模板不能被其他模板繼承。
Definitions 和 Nodes:這兩個Key具體描述不清楚,Nodes里定義的是工程中的文件目錄結構,Definitions中的Path定義的是該模板文件的位置。
SortOrder:在dialog中的位置,越大越前面
其實了解這些Key差不多就可以自定義 Template Project啦。。。。大家可以動手來have a try 。
如果需要更多相關內容,自行Google。
附上一個[自制小工具 ]
(http://7xtamz.com2.z0.glb.clouddn.com/plistRelease.zip)。
可以把你制作的模板文件導成模板plist,移入Xcode目錄中就可以用了。
考慮貌似用的storyboard也不多,干脆就不繼承storyboard模板了,有需要的可以自己在數據源文件夾自己加Main. storyboard,然后在build setting設置interface 為Main。
1.目前文件夾中沒生成Main.storyboard。工程創建之后需要手動復制一個Main.storyboard到生成的<code>KentonYuApplication.xctemplate</code>文件夾里。
2.或者手動從工程的project.pbxproj中移除storyboard相關的引用。
里面也可以用Podfile,只需要把你的Podfile文件放在數據源第一級目錄里,然后創建的工程執行<code>pod install</code>。
歡淫評論bugs~~。