Creating Custom Xcode 4 Project Templates

本文详细介绍了如何为Xcode4创建自定义项目模板,包括必要的文件结构、TemplateInfo.plist文件的配置等内容,并提供了各个关键字段的具体用法。

This post contains the material on custom project templates I had prepared for the book. The material was not strong enough to put in the book, mainly because creating custom project templates manually in Xcode 4 is difficult (much more difficult than in previous versions of Xcode) and not documented by Apple. I had a difficult time getting a simple project template to work. But there is not a lot of information available on creating Xcode 4 project templates so I’m making what I wrote available here. I hope it helps you create your own project templates.

For more information on Xcode 4 project templates, look at Apple’s templates and read the following articles, which you’ve probably read if you’ve done a Google search for creating project templates in Xcode 4:

A minimal project template for Xcode 4

About XCode 4 Project Template (How To Create Custom Project Template)

Project Template Contents

At a minimum a project template consists of two items: a folder with the extension .xctemplate and a property list file named TemplateInfo.plist. You can also have additional files like icon files, source code files, and xib files in the project template. Place these files and the property list file in the template folder.

The .xctemplate extension defines the folder as a template folder. The name of the folder is the name that appears in the list of templates for the selected category in the New Project Assistant. The name of the folder is the name of the template.

Apple’s Project Templates

I recommend duplicating the TemplateInfo.plist file from one of Apple’s templates and using that copy as your TemplateInfo.plist file. You can find Apple’s iOS project templates in the following location:

Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project Templates

The rest of Apple’s project templates are in the following location:

Developer/Library/Xcode/Templates/Project Templates

Developer is where you installed Xcode 4.

Open the TemplateInfo.plist file in Xcode to modify it. I’m going to cover the keys in the TemplateInfo.plist file later in this post.

Moving the Template Folder

For Xcode to find your project template you must move the template folder to the user templates folder, which is in the following location:

/Users/Username/Library/Developer/Xcode/Templates/Project Templates/GroupName

You may need to manually create some of the folders in the path to the user templates folder. GroupName is the name of the category on the left side of the New Project Assistant. You can create your own group name or use one of the built-in names. Your project template will appear in the GroupName category.

TemplateInfo.plist Keys

The TemplateInfo.plist file has the following keys (this may not be an exhaustive list) for project templates:

  • Ancestors
  • Concrete
  • Definitions
  • Description
  • Identifier
  • InjectionTargets
  • Kind
  • MacOSXVersionMin
  • Nodes
  • Options
  • Platforms
  • Project
  • SortOrder
  • Targets

Your template does not have to use all these keys. The data type for the keys is usually one of the following: Array, Boolean, Dictionary, or String.

ANCESTORS KEY

The Ancestors key is an array of strings. The strings are the identifiers of the project templates your template inherits from. If your template has no ancestors, you can ignore this key.

Suppose your template inherits from Apple’s Cocoa Application template. You want the same options the Apple template has to create a document-based application, to use Core Data, and to add a unit testing bundle. In this case you would need to inherit from Apple’s document-based application, Core Data application, and CoreDataSpotlight application templates. You would add the following ancestor values to your template:

com.apple.dt.unit.cocoaDocumentBasedApplication
com.apple.dt.unit.coreDataApplication
com.apple.dt.unit.coreDataSpotlightApplication

CONCRETE KEY

The Concrete key is a Boolean value. You must set the Concrete key to YES for your template to appear in the New Project Assistant.

DEFINITIONS KEY

The Definitions key is a dictionary. This key allows you to add comments, includes, and code to source code files. It also allows you to create groups from files or folders in an Xcode workspace. If you use the Definitions key to create groups, you must also have a Nodes key in your project template.

DESCRIPTION KEY

The Description key describes the project template. The contents of the Description key appear at the bottom of the New Project Assistant when you select the project template.

IDENTIFIER KEY

The Identifier key is a string value that uniquely identifies your template. It takes the following form:

com.CompanyName.TemplateName

INJECTIONTARGETS

The InjectionTargets key is an array of strings. The strings are the identifiers of project templates. The InjectionTargets key is a new key, which didn’t exist when I originally researched custom project templates. A Google search turned up no results. You’re on your own.

KIND KEY

The Kind key is a string value. It should have the following value:

Xcode.Xcode3.ProjetTemplateUnitKind

If you inherit from another template, you shouldn’t have to specify the Kind key.

MACOSXVERSIONMIN KEY

The MacOSXVersionMin key is the earliest version of Mac OS X that can use the template.

NODES KEY

The Nodes key is an array key that creates a file in the project. Add a string key for each file you want to be created in the project. The value for the key is the name of the file.

OPTIONS KEY

The Options key is an array that lets you add controls to the New Project Assistant. An example of a custom control is the Type pop-up menu for command-line tool projects that lets you choose the language for the project. The Type menu is an example of a custom control.

Create a dictionary key for each control you want to add. Add keys to the dictionary key. The following are common keys for controls:

  • Type identifies the type of control. Pop-up menus should use a value of popup. Checkboxes should use a value of checkbox. Text fields should use a value of text. Combo boxes should use a value of combo.
  • Name is the label for the control.
  • Description contains tool tip text for the control.
  • Identifier is a string that uniquely identifies the control.
  • Default is a string that provides a default value for a control.
  • Values is an array that contains the entries for a combo box or pop-up menu.
  • Required is a Boolean key that says whether a condition has to be true for the control to be enabled.

You can see an example of the Required key if you create a Cocoa application. The Document Extension text field is disabled unless you select the Create Document-Based Application checkbox. If you use the Required key, you must add a RequiredOptions dictionary key that contains the conditions.

PLATFORMS KEY

The Platforms key is an array of strings that identifies the platforms the template works on. A Mac project template has the following value:

com.apple.platform.macosx

An iOS project template has the following value:

com.apple.platform.iphoneos

PROJECT KEY

The Project key is a dictionary key that contains build settings. For those of you creating project templates for personal use, I recommend using a configuration settings file instead of placing build setting values in the project template. A reason to add build settings is if you want to add libraries to the project template. Add a build setting for linker flags and add the flags for the libraries, such as -lLibraryName.

If you use the Project key to place build settings in the project template, you will most likely need to create additional dictionary keys inside the Project key. Create a Configuration dictionary key for configuration-specific build settings. Inside the Configurations dictionary, create Debug and Release dictionaries. Place your configuration-specific build settings inside the Debug and Release dictionaries. Create a SharedSettings dictionary for any build settings that apply to all build configurations. Place any build settings that apply to all build configurations inside the SharedSettings dictionary.

SORTORDER KEY

I’m not exactly sure what the SortOrder key does. I haven’t seen a sort order value other than 1 in Apple’s templates.

TARGET KEY

The Targets key is an array key you use to add frameworks, libraries, build phases, and build settings to the template. The build settings you add to the Targets key apply to the target while the build settings you add to the Project key apply to the project.

To add frameworks to the template, add a Frameworks key to the Targets key. The Frameworks key should be an array. Add string keys to the Frameworks key. The value of a string key is the name of the framework. None of Apple’s project templates use a library so I don’t know what you have to do to add a library to the Target key.

To add build phases, create a dictionary key named BuildPhases. Add a dictionary key for each build phase you want in the project template. At a minimum you need to add a Class string key to the dictionary key that contains the name of the build phase. Use the following values:

  • Sources is the name for the Compile Sources build phase.
  • Frameworks is the name for the Link Binary with Libraries build phase.
  • Resources is the name for the Copy Bundle Resources build phase.
  • CopyFiles is the name for the Copy Files build phase.
  • ShellScript is the name for the Run Script build phase.
  • Headers is the name for the Copy Headers build phase.
  • Rez is the name for the Build Carbon Resources build phase.

转载于:https://www.cnblogs.com/t1006/archive/2013/05/20/3089394.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值