經過一番周折,終於在xcode5上實現了一個簡單的自定義模板,在項目中集成NSLogger庫(增強NSLog的功能,https://github.com/fpillet/NSLogger)——新建項目中自動加入LoggerClient.h,LoggerClient.m ,LoggerCommon.h以及一些Frameworks。
如果從零開始定義一個模板,未免太過復雜,最簡單的方法就是把系統模板復制過來修改^_^。
系統模板路徑:
//路徑1 Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates //路徑2 Xcode.app/Contents/Developer/Library/Xcode/Templates
可以看到,兩個路徑下的模板都分為File Templates和Project Templates兩種。顧名思義,文件模板用於創建文件,項目模板用於創建項目,這里需要的是Project Templates。這里在Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project Templates/下找到Single View Application.xctemplate模板,復制到自定義模板路徑下。
自定義模板的存放位置:
~/Library/Developer/Xcode/Templates
如果之前安裝過cocos2d,那么在上面路徑下就可以看到cocos2d的庫文件。借鑒cocos2d和PhoneGap的做法,把Single View Application.xctemplate放在路徑3下:
//路徑3 ~/Library/Developer/Xcode/Templates/Project Templates/Application
然后需要兩步:
--把Single View Application.xctemplate文件夾名稱改為xxx.xctemplate,后綴名必須為xctemplate,這里以Test Template.xctemplate為例。
--打開Test Template.xctemplate中的TemplateInfo.plist文件,將鍵Identifier的值改為com.apple.dt.unit.testTemplateApplication,這個值是模板的唯一標識。
保存更改后,在new project的templates dialog中就可以看到剛剛定義的模板了:

此時Test Template模板與系統的Single View Application模板是一樣,要想進行自定義,我們先來分析下Test Template.xctemplate的組成。
--TemplateInfo.plist(必要):所有的模板屬性設置都在這里。
--TemplateIcon.tiff(可選):定義顯示在new project的dialog中的模板圖標。
-- Main_iPhone.storyboard、Main_iPad.storyboard:要添加在項目中的文件。
所以這里我們把NSLogger的庫文件放到Test Template.xctemplate下:

此時新建Test Template項目,肯定是不會自動添加上NSLogger文件的,看來還需要在TemplateInfo.plist中設置一番。
打開TemplateInfo.plist,先來分析一下各個鍵值的意義:
Ancestors:要繼承的模板。也就是模板的“父類”,從父類那里繼承一些模板的基礎屬性,可以有多個父類。
Concrete:設置為YES的模板才可以顯示在new project的dialog中,此時這個模板不能被其他模板繼承。
Definitions:將Nodes中定義的文件添加到項目中(還有其他功能,這里暫且不表)。
Description:就是Description。
Identifier:剛才已經接觸過,模板的唯一標示符,若模板B要繼承模板A,就在模板B的Ancestors中寫上模板A的Identifier。
Kind:項目模板為Xcode.Xcode3.ProjectTemplateUnitKind,文件模板為Xcode.IDEKit.TextSubstitutionFileTemplateKind。
Nodes:定義要添加到項目中的文件(還有其他功能,這里暫且不表)。
Options:定義在new project中選擇模板后點擊next后的dialog中的內容,如Product Name、Organization Name、Company Identifier、Bundle Identifier等。
SortOrder:該模板顯示在new project的dialog中的位置索引。
更詳細的解釋會在后面給出鏈接。
回頭看下我們的需求:在新建項目中自動加入LoggerClient.h,LoggerClient.m ,LoggerCommon.h以及一些Frameworks。那么首先編輯的鍵值就是Nodes、Definitions。
Nodes編輯如下:

Definitions編輯如下:

需要注意的是這里LoggerClient.h,LoggerClient.m ,LoggerCommon.h三個文件都是放在NSLogger文件夾下的。
保存plist修改,此時新建Test Template項目,可以看到已經自動添加上了NSLogger類了。
還有一步工作,需要在項目中添加上NSLogger庫要求的Frameworks。很簡單,在plist中加入一個key ——Targets。

保存plist后,新建Test Template項目,完工。附上TemplateInfo.plist以供參考。

最后附上參考資料:http://www.learn-cocos2d.com/store/xcode4-template-documentation/里面詳細的介紹文件模板和項目模板(Xcode4的方法適用與xcode5),以及TemplateInfo.plist中各個鍵值的意義。感謝這篇文章的作者。
