创建一个Xcode项目模板

大家好,我是Vanya-iOS开发人员 在本文中,我将讨论如何创建Xcode项目模板以及它们如何在项目开始时帮助节省时间。



现在,iOS开发人员拥有许多可自动执行常规操作的工具。 在Surf中,我们使用Generamba,Fastlane,SwiftGen,SwiftLint,Jenkins。 并不断寻找使其他东西自动化的方法。 而且如果之前我们花1-2天来初始化一个新项目,那么现在只花了不到4个小时。


开始开发大型项目需要什么?

1.创建一个存储库。
-配置访问权限;
-在聊天开发人员中设置通知。


2.创建一个项目。
-创建文件夹结构;
-添加各种辅助文件,例如所有您喜欢的扩展名;
-配置CI / CD;
-添加各种短毛绒和发电机(Generamba / SwiftLint / SwiftGen);
-收紧瘾;
-...
经过1-2天的工作,您可以开始全面的开发。


显然,这些步骤大多数都可以自动化。 可能的选择包括:
-XcodeGen;
-Xcode项目模板;
-基本的Xcode项目。

Xcodegen

+允许您使用配置文件动态生成.xcodeproj,这增加了消除项目文件中冲突的功能。
-与其他脚本结合使用,因为它仅适用于项目文件,而不会影响其余文件。

Xcode项目模板

+您可以使用所有设置以及任何其他其他文件来生成.xcodeproj。
-在xml中没有完整的正式文档和模板说明。

基本的Xcode项目

+快速配置并立即使用所有必需的文件和依赖项。
-长时间为特定项目进行改造。 而且,您可能会意外地跳过一步,朝自己的脚射击。

结果,我们决定使用Xcode项目,这使我们能够优化流程并减少创建项目的时间。 基本的Xcode项目看起来像拐杖,而且我们不需要自定义脚本带来的灵活性。


Xcode项目模板


正如我在上面所述,使用Xcode模板,您可以创建iOS / macOS / tvOS / watchOS /跨平台项目,并添加任何文件和设置。 问题是Apple没有为此提供任何文档。 这就是-几个小型教程和不同爱好者的示例,我使用了此Wiki。

开箱即用
iOS应用程序模板在这里:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project Templates/iOS/

以及适用于MacOS的应用程序:
/Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates/Project Templates/Mac/

项目模板由普通的.plist文件表示。 这是熟悉的Single View应用程序的外观。



每个模板都有一个唯一的名称-“标识符”,Apple的模板具有com.apple.dt.unit前缀。
祖先是当前模板的父代。 模板支持多重继承,即,单视图应用程序从情节提要应用程序和Core Data Cocoa Touch应用程序继承属性。

这就是“单视图应用程序层次结构”的样子。



创建自己的模板

自定义模板最好添加到本地库〜/ Library / Developer / Xcode / Templates中,因此在更新Xcode时我们不会丢失它们。 如果没有这样的目录,请创建它。

我准备了一个小的模板,它将以预定义的依赖关系添加到我们的项目Podfile中。

准备好的模板代码
 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Kind</key> <string>Xcode.Xcode3.ProjectTemplateUnitKind</string> <key>Identifier</key> <string>ru.surfstudio.dt.unit.customTemplate</string> <key>Ancestors</key> <array> <string>com.apple.dt.unit.singleViewApplication</string> </array> <key>Concrete</key> <true/> <key>Description</key> <string></string> <key>Definitions</key> <dict> <key>../Podfile</key> <string>platform :ios, '11.0' pod 'Alamofire' pod 'Crashlytics' pod 'Fabric' </string> </dict> <key>Nodes</key> <array> <string>../Podfile</string> </array> </dict> </plist> 


在这里,我们创建了“定义”部分,其中包含可以添加到项目中的变量和文件。 在那里,添加了Podfile键。 键指示我们正在创建或编辑的文件。 在密钥之后,设置将要写入此文件的行。 无需手动编写行,而是使用模板从目录中引用文件,然后从那里获取文件。

现在,将这段代码放入模板目录中CustomTemplate.xctemplate文件夹中名为TemplateInfo.plist的文件中。

让我们看看我们得到了什么。 如果一切都按计划进行,那么在Xcode中创建一个项目(文件->新建->项目(⇧⌘N))时,我们将看到一个新的模板部分,并在其中看到我们的新“ CustomTemplate”模板。



我们选择它并创建一个项目。 创建后,将根据需要添加Prodfile。



我们抽模板

让我们为我们的项目添加自述文件生成器。 现在,让我们尝试立即使用文件添加它,而不是在模板中对其进行描述。

因此,将README.md文件添加到我们的CustomTemplate.xctemplate中,它是:

 # ___PROJECTNAME___ Description of my project 


为了使我们的模板能够向“节点”部分添加文件,您需要添加:

 <string>../README.md</string> 


另外,在“定义”部分中,添加:

 <key>../README.md</key> <dict> <key>Path</key> <string>README.md</string> </dict> 

现在,完整的模板代码如下所示
 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Kind</key> <string>Xcode.Xcode3.ProjectTemplateUnitKind</string> <key>Identifier</key> <string>ru.surfstudio.dt.unit.customTemplate</string> <key>Ancestors</key> <array> <string>com.apple.dt.unit.singleViewApplication</string> </array> <key>Concrete</key> <true/> <key>Description</key> <string></string> <key>Definitions</key> <dict> <key>../Podfile</key> <string> platform :ios, '11.0' pod 'Alamofire' pod 'Crashlytics' pod 'Fabric' </string> <key>../README.md</key> <dict> <key>Path</key> <string>README.md</string> </dict> </dict> <key>Nodes</key> <array> <string>../Podfile</string> <string>../README.md</string> </array> </dict> </plist> 


让我们检查一下结果。
让我们再次尝试使用CustomTemplate创建一个项目,最后,我们将看到自述文件已添加到该项目中:



细心的人注意到在README.md中,我们在标题中添加了___PROJECTNAME___,而不是“ MyNewProject”。 ___PROJECTNAME___,这是一个预定义的常量,您可以根据需要使用它。

例如,为了生成带有代码的文件头,就像Xcode通常为我们所做的那样,请使用以下模板:

 // // ___FILENAME___ // ___PACKAGENAME___ // // Created by ___FULLUSERNAME___ on ___DATE___. //___COPYRIGHT___ // 

有关可用常量的更多信息,请参见此处

结论


今天,我们学习了如何创建简单的项目模板。 现在,我们有了一个模板,可以将Podfile和README文件添加到我们的项目中。

如果您想遵循我们的脚步并减少创建项目的时间,那么我建议:

1.选择正确的解决方案。
除了Xcode模板之外,还有其他模板:XcodeGen或基础项目。 无论如何,在选择工具之前,请先研究其优缺点并选择合适的工具。

2.详细描述创建典型项目所需的步骤。 项目不是很经常启动,因此您可以忽略一些步骤。

3.尝试使步骤2中的步骤自动化。
例如,其中一些应转移到Xcode模板,另一些应转移到创建项目后要调用的脚本。

有用的信息: 有关模板评论文章和模板 停靠

Source: https://habr.com/ru/post/zh-CN460265/


All Articles