1. Template folder location
/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project Templates
/Users/<username>/Library/Developer/Xcode/Templates/
mkdir -p ~/Library/Developer/Xcode/Templates
2. The Templates are in folders like
iPad Base.xctemplate, iPhone Base.xctemplate, Cocoa Touch Application.xctemplate
View-based Application.xctemplate Window-based Application.xctemplate
3. The Ancestors, Definitions and Options are defined in TemplateInfo.plist
4. To add files in the Template, you should define them in Definitions like
<key>Definitions</key>
<dict>
<key>___PACKAGENAMEASIDENTIFIER___MyController.h</key>
<dict>
<key>Group</key>
<string>My Classes</string>
<key>Path</key>
<string>Classes/___PACKAGENAMEASIDENTIFIER___MyController.h</string>
</dict>
<key>___PACKAGENAMEASIDENTIFIER___MyController.m</key>
<dict>
<key>Group</key>
<string>My Classes</string>
<key>Path</key>
<string>Classes/___PACKAGENAMEASIDENTIFIER___MyController.m</string>
</dict>
<key>README</key>
<dict>
<key>Path</key>
<string>README</string>
<!-- excluded in targets -->
<key>TargetIndices</key>
<array/>
</dict>
<!-- Other definitions here -->
</dict>
Also define in Nodes
<key>Nodes</key>
<array>
<string>___PACKAGENAMEASIDENTIFIER___MyController.h</string>
<string>___PACKAGENAMEASIDENTIFIER___MyController.m</string>
<string>README</string>
<!-- Other nodes here -->
</array>
5. To add build stage for existing Target
<key>Targets</key>
<array>
<dict>
<key>BuildPhases</key>
<array>
<dict>
<key>Class</key>
<string>ShellScript</string>
<key>ShellPath</key>
<string>/bin/bash</string>
<key>ShellScript</key>
<string>ls -l</string>
</dict>
</array>
</dict>
<!-- Other targets here -->
</array>
6. Add New Target
<key>Targets</key>
<array>
<!-- Default target here -->
<dict>
<key>Name</key>
<string>My Target for ___PACKAGENAME___</string>
<key>TargetType</key>
<string>Aggregate</string>
<key>SharedSettings</key>
<dict>
<key>PRODUCT_NAME</key>
<string>$(TARGET_NAME)</string>
</dict>
<key>BuildPhases</key>
<array>
<dict>
<key>Class</key>
<string>ShellScript</string>
<key>ShellPath</key>
<string>/bin/bash</string>
<key>ShellScript</key>
<string>ls -l</string>
</dict>
</array>
</dict>
</array>
For ShellScript, please use html codes like these
< | < |
> | > |
& | & |
.
.
.