Hallo allerseits, ich bin Vanya - iOS-Entwickler. In diesem Artikel werde ich darüber sprechen, wie Xcode-Projektvorlagen erstellt werden und wie sie zu Beginn des Projekts Zeit gespart haben.

Jetzt haben iOS-Entwickler viele Tools, um Routinaktionen zu automatisieren. In Surf verwenden wir Generamba, Fastlane, SwiftGen, SwiftLint, Jenkins. Und ständig auf der Suche nach Möglichkeiten, etwas anderes zu automatisieren. Und wenn wir früher 1-2 Tage mit der Initialisierung eines neuen Projekts verbracht haben, dauert es jetzt nicht mehr als 4 Stunden.
Was brauchen Sie, um ein großes Projekt zu entwickeln?
1. Erstellen Sie ein Repository.
- Konfigurieren Sie Zugriffsrechte.
- Richten Sie Benachrichtigungen in den Chat-Entwicklern ein.
2. Erstellen Sie ein Projekt.
- Erstellen Sie eine Ordnerstruktur;
- Fügen Sie verschiedene Hilfsdateien wie alle Ihre bevorzugten Erweiterungen hinzu.
- CI / CD konfigurieren;
- Fügen Sie verschiedene Linter und Generatoren hinzu (Generamba / SwiftLint / SwiftGen);
- Verschärfung der Sucht;
- ...
Nach 1-2 Arbeitstagen können Sie mit der vollwertigen Entwicklung beginnen.
Offensichtlich können die meisten dieser Schritte automatisiert werden. Zu den möglichen Optionen gehörten:
- XcodeGen;
- Vorlagen von Xcode-Projekten;
- Grundlegendes Xcode-Projekt.
Xcodegen
+ Ermöglicht das Generieren von .xcodeproj im laufenden Betrieb mithilfe der Konfigurationsdatei, wodurch Konflikte in der Projektdatei beseitigt werden können.
- Wird in Verbindung mit anderen Skripten verwendet, da es nur mit der Projektdatei funktioniert, ohne den Rest der Dateien zu beeinflussen.
Xcode-Projektvorlagen
+ Sie können .xcodeproj mit allen Einstellungen sowie anderen zusätzlichen Dateien generieren.
- Es gibt keine vollständige offizielle Dokumentation und Beschreibung der Vorlagen in XML.
Grundlegendes Xcode-Projekt
+ Schnell und sofort mit allen notwendigen Dateien und Abhängigkeiten konfigurieren.
- Umbau für ein bestimmtes Projekt für eine lange Zeit. Und Sie können versehentlich einen Schritt überspringen und sich in den Fuß schießen.
Infolgedessen haben wir uns für die Verwendung von Xcode-Projekten entschieden. Dadurch konnten wir den Prozess optimieren und die Zeit für die Erstellung eines Projekts verkürzen. Das grundlegende Xcode-Projekt schien eine Krücke zu sein, und wir brauchen nicht die Flexibilität, die benutzerdefinierte Skripte bieten.
Xcode-Projektvorlagen
Wie ich oben geschrieben habe, können Sie mit Xcode-Vorlagen iOS / macOS / tvOS / watchOS / plattformübergreifende Projekte erstellen und beliebige Dateien und Einstellungen hinzufügen. Das Problem ist, dass Apple hierfür keine Dokumentation zur Verfügung stellt. Alles was das ist - ein paar kleine Tutorials und Beispiele von verschiedenen Enthusiasten, ich habe
dieses Wiki benutzt.Was ist out of the boxIOS-Anwendungsvorlagen finden Sie hier:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project Templates/iOS/
und für MacOS-Anwendungen hier:
/Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates/Project Templates/Mac/
Projektvorlagen werden durch normale .plist-Dateien dargestellt. So sieht die bekannte Single View-Anwendung aus.

Jede Vorlage hat einen eindeutigen Namen - "Identifier". Die Vorlagen von Apple haben das Präfix com.apple.dt.unit.
Vorfahren sind die Eltern der aktuellen Vorlage. Vorlagen unterstützen Mehrfachvererbung, dh die Single View-Anwendung erbt die Eigenschaften von der Storyboard-Anwendung und der Core Data Cocoa Touch-Anwendung.
So sieht die Single View-Anwendungshierarchie aus.
Erstellen Sie Ihre eigene VorlageEs ist besser, der lokalen Bibliothek ~ / Library / Developer / Xcode / Templates benutzerdefinierte Vorlagen hinzuzufügen, damit wir sie beim Aktualisieren von Xcode nicht verlieren. Wenn es kein solches Verzeichnis gibt, erstellen Sie es.
Ich habe eine kleine Vorlage vorbereitet, die unserem Projekt Podfile mit vordefinierten Abhängigkeiten hinzugefügt wird.
Vorbereiteter Vorlagencode <?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>
Hier haben wir den Abschnitt Definitionen erstellt, der Variablen und Dateien enthält, die dem Projekt hinzugefügt werden können. Dort und fügte den Podfile-Schlüssel hinzu. Der Schlüssel gibt die Datei an, die wir erstellen oder bearbeiten. Legen Sie nach dem Schlüssel die Zeile fest, die in diese Datei geschrieben werden soll. Anstatt Zeilen manuell zu schreiben, verweisen wir auf die Dateien aus dem Verzeichnis mit der Vorlage und nehmen sie von dort.
Nehmen Sie nun diesen Code und legen Sie ihn in einer Datei namens TemplateInfo.plist im Ordner CustomTemplate.xctemplate aus dem Vorlagenverzeichnis ab.
Mal sehen, was wir haben. Wenn alles nach Plan verlaufen ist, wird beim Erstellen eines Projekts in Xcode (Datei-> Neu-> Projekt (⇧⌘N)) ein neuer Abschnitt mit Vorlagen und darin unsere neue Vorlage „CustomTemplate“ angezeigt.

Wir wählen es aus und erstellen ein Projekt. Nach der Erstellung wird Prodfile nach Bedarf hinzugefügt.
Wir pumpen über die VorlageFügen wir die Readme-Generation für unser Projekt hinzu. Versuchen wir nun, es sofort mit einer Datei hinzuzufügen und nicht in der Vorlage zu beschreiben.
Fügen Sie also die Datei README.md in unsere Datei CustomTemplate.xctemplate ein und schon ist sie da:
# ___PROJECTNAME___ Description of my project
Damit unsere Vorlage eine Datei zum Abschnitt "Knoten" hinzufügen kann, müssen Sie Folgendes hinzufügen:
<string>../README.md</string>
Fügen Sie außerdem im Abschnitt Definitionen Folgendes hinzu:
<key>../README.md</key> <dict> <key>Path</key> <string>README.md</string> </dict>
Der vollständige Vorlagencode sieht jetzt so aus <?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>
Lassen Sie uns überprüfen, was daraus wurde.
Versuchen wir noch einmal, ein Projekt mit unserer CustomTemplate zu erstellen, und am Ende werden wir sehen, dass Readme zum Projekt hinzugefügt wurde:

Aufmerksame Leute bemerkten, dass wir in README.md ___PROJECTNAME___ zum Header hinzugefügt haben und nicht "MyNewProject". ___PROJECTNAME___, dies ist eine vordefinierte Konstante, die Sie für Ihre Anforderungen verwenden können.
Verwenden Sie beispielsweise die folgende Vorlage, um einen Header für eine Datei mit Code zu generieren, wie dies Xcode normalerweise für uns tut:
// // ___FILENAME___ // ___PACKAGENAME___ // // Created by ___FULLUSERNAME___ on ___DATE___. //___COPYRIGHT___ //
Weitere Informationen zu den verfügbaren Konstanten finden Sie
hier .
Fazit
Heute haben wir gelernt, wie man einfache Projektvorlagen erstellt. Jetzt haben wir eine Vorlage, mit der Sie Podfile- und README-Dateien zu unserem Projekt hinzufügen können.
Wenn Sie in unsere Fußstapfen treten und die Zeit zum Erstellen eines Projekts verkürzen möchten, empfehle ich:
1. Wählen Sie die richtige Lösung.
Neben Xcode-Vorlagen gibt es noch andere: XcodeGen oder das Basisprojekt. In jedem Fall sollten Sie vor der Auswahl eines Tools die Vor- und Nachteile studieren und das richtige auswählen.
2. Beschreiben Sie ausführlich die Schritte, die zum Erstellen eines typischen Projekts erforderlich sind. Projekte werden nicht sehr oft initiiert, sodass Sie einige Schritte vergessen können.
3. Versuchen Sie, die Schritte ab Punkt 2 zu automatisieren.
Einige davon sollten beispielsweise in die Xcode-Vorlage übertragen werden, andere in Skripts, die nach der Erstellung des Projekts aufgerufen werden sollen.
Nützliche Informationen: Ein
Übersichtsartikel zu Vorlagen und
Docks zu Vorlagen