热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

自定义iOSXcode工程模板

每一个iOSXcode工程模板由一个主模板文件、0个或者多个基模板文件组成。每一个模板的文件名必须以.xctemplate结尾,必须包含TemplateInfo.plist文件。在Templa

每一个iOS Xcode工程模板由一个主模板文件、0个或者多个基模板文件组成。每一个模板的文件名必须以.xctemplate结尾,必须包含TemplateInfo.plist文件。在TemplateInfo.plist中:1)Concrete字段标识该模板是主模板还是基模板,COncrete=YES为主模板,COncrete=NO为基模板;2)Identifier字段标识模板的唯一性(例如:com.apple.dt.unit.base),主模板通过在Ancestors Array插入Identifier Item引用基模板。

介绍几个路径(以iOS工程模板为例)
1. Xcode的基模板路径 /Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates/Project Templates
2. Xcode的iOS基模板路径 
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project\ Templates/iOS 
3. Xcode的iOS工程主模板路径
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project Templates/iOS/Application
4. 自定义Xcode的iOS工程模板存放路径
~/Library/Developer/Xcode/Templates

自定义Xcode工程模板,可以通过修改Xcode自带的工程模板来完成。下面以修改Single View Application(以下简称SVA)为例进行阐述。SVA由以下几个模板组成,依赖关系如下:
Screen_Shot_2015_01_15_at_11_48_52_AM
先介绍几个通用字段:
1. Kind:固定为Xcode.Xcode3.ProjectTemplateUnitKind;
2. Concrete:主基模板标识;
3. Ancestors:引用的基模板;
4. Identifier:模板的唯一性标识;
5. Project、Target字段标识的属性作用域分别为整个工程和包;
6. Project、Target都可以包括:1)SharedSettings字段标识为工程的一些配置属性;2)Configurations分Debug和Release两部分的属性。
7. Platforms:标识该模板适用的平台,如com.apple.platform.iphoneos。
8. Options
1)在Base.xctemplate中,Options用来展示建立工程时,填写的Product Name、Organization Name、Organization Identifier和Bundle Identifier;
2)常用的Item类型有:popup、text、static、checkbox;
3)Options中的Item是否起作用,通过Required来标识;
4)在Language Choice中,Options标识开发所用语言Item:Objective-C或Swift,类型为popup,唯一标识Identifier为languageChoice;
5)继承于Language Choice.xctemplate的工程模板,Options中可以使用Identifier为languageChoice的Item。因为languageChoice Item的类型popup(有Objective-C、Swift选项供用户选择),所以Options中的Item包含Units用于分别执行各个选项。
9. Definitions
1)在工程目录结构中看到的文件,可以通过2个途径生成:在TemplateInfo.plist中通过代码生成、模板本身创建好的文件;
2)关于路径
a. Definitions中key-value是一个命名为“生成工程后的目的路径/文件名”的Dictionary。该Dictionary一般包括Path(该文件当前路径)和Group(生成工程后文件所在工程中的Group);
b. ../表示生成工程后,该文件和工程文件同一个目录;
c. 代码生成的文件,必须以“生成工程后的目的路径/文件名”方式进行引用。
10. Nodes:用来生成文件结点(工程目录结构中能够看到的)。
11. 常用的全局名称
1)__DATE__、__YEAR__、__TIME__:标识当前时间;
2)__FILENAME__:带文件后缀的全名;
3)__FILEBASENAME__:不带文件后缀的名字;
4)__ORGANIZATIONNAME__:当前设置的Organization;
5)__USERNAME___:当前的用户名;
6)__PROJECTNAME__:工程名字;
7)__PACKAGENAME__:包名,初始时和__PROJECTNAME__一样。
这些名称可以在文件命名、文件内部和template.plist中使用。

Base、Language Choice和Core Data Cocoa Touch Application用来展示创建SVA工程引导中的一些选项,Project Name、Company Name、 Organization Name、Bundle Name、语言和是否使用Core Data等等。Info.plist是key-value文件,Bundle Base、Application Base和Cocoa Touch Application Base各为其添加key-value。如果想改变Info.plist的路径需在前面添加相对路径。其他文件解析类似。

主模板文件夹中TemplateIcon.tiff用来标识工程模板的Icon,自定义的模板只需替换这个文件即可达到修改Icon的目的。最后,只需要写一个简单的sh脚本,把自定义好的模板拷贝到路径4下即可完成模板的安装。(一个完整的SVA模板:https://git.oschina.net/arbull/single_view_application_template.git)


推荐阅读
  • IOS Run loop详解
    为什么80%的码农都做不了架构师?转自http:blog.csdn.netztp800201articledetails9240913感谢作者分享Objecti ... [详细]
  • 开发技巧:在Interface Builder中实现UIButton文本居中对齐的方法与步骤
    开发技巧:在Interface Builder中实现UIButton文本居中对齐的方法与步骤 ... [详细]
  • ButterKnife 是一款用于 Android 开发的注解库,主要用于简化视图和事件绑定。本文详细介绍了 ButterKnife 的基础用法,包括如何通过注解实现字段和方法的绑定,以及在实际项目中的应用示例。此外,文章还提到了截至 2016 年 4 月 29 日,ButterKnife 的最新版本为 8.0.1,为开发者提供了最新的功能和性能优化。 ... [详细]
  • Android ListView 自定义 CheckBox 实现列表项多选功能详解
    本文详细介绍了在Android开发中如何在ListView的每一行添加CheckBox,以实现列表项的多选功能。用户不仅可以通过点击复选框来选择项目,还可以通过点击列表的任意一行来完成选中操作,提升了用户体验和操作便捷性。同时,文章还探讨了相关的事件处理机制和布局优化技巧,帮助开发者更好地实现这一功能。 ... [详细]
  • iOS开发 - 解决导航栏子视图损坏问题
    本文介绍了一个在Xcode 5.0.2和iOS 7模拟器环境下,使用Storyboard创建CoreData CRUD应用时遇到的导航栏子视图损坏问题及其解决方案。 ... [详细]
  • 一个建表一个执行crud操作建表代码importandroid.content.Context;importandroid.database.sqlite.SQLiteDat ... [详细]
  • Android 自定义 RecycleView 左滑上下分层示例代码
    为了满足项目需求,需要在多个场景中实现左滑删除功能,并且后续可能在列表项中增加其他功能。虽然网络上有很多左滑删除的示例,但大多数封装不够完善。因此,我们尝试自己封装一个更加灵活和通用的解决方案。 ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • 本文介绍了在 Java 编程中遇到的一个常见错误:对象无法转换为 long 类型,并提供了详细的解决方案。 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • 在《Cocos2d-x学习笔记:基础概念解析与内存管理机制深入探讨》中,详细介绍了Cocos2d-x的基础概念,并深入分析了其内存管理机制。特别是针对Boost库引入的智能指针管理方法进行了详细的讲解,例如在处理鱼的运动过程中,可以通过编写自定义函数来动态计算角度变化,利用CallFunc回调机制实现高效的游戏逻辑控制。此外,文章还探讨了如何通过智能指针优化资源管理和避免内存泄漏,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
  • 本文详细介绍了 jQuery 的入门知识与实战应用,首先讲解了如何引入 jQuery 库及入口函数的使用方法,为初学者提供了清晰的操作指南。此外,还深入探讨了 jQuery 在实际项目中的多种应用场景,包括 DOM 操作、事件处理和 AJAX 请求等,帮助读者全面掌握 jQuery 的核心功能与技巧。 ... [详细]
  • iOS开发中MVC架构模式的深入解析(第一部分)
    在iOS开发中,MVC架构模式是常用的设计模式之一。本文将深入解析MVC架构的第一部分,重点介绍View组件。View组件继承自UIView,主要负责内容的展示(如UILabel等视图类)和用户输入的处理(如UIButton等控件类)。通过详细的代码示例和实际应用,帮助开发者更好地理解和掌握View在MVC架构中的作用和实现方式。 ... [详细]
  • UI组件:ext、JqueryEasyUI、miniui、dhtmlx及自定义页面
    这篇博文主要是分析下当前经常使用到的UI组件,他们的效果和功能一般都可以满足我们平常项目使用,但对于较复杂些的项目建议你要斟酌下再决定是否使用ÿ ... [详细]
  • [译]  OS X 和 iOS 的测绘框架Core Plot 入门教程
    [译] OS X 和 iOS 的测绘框架Core Plot 入门教程 ... [详细]
author-avatar
小王儿
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有