إنشاء قالب مشروع Xcode

مرحباً بالجميع ، أنا فانيا - مطور نظام التشغيل iOS. في هذه المقالة ، سأتحدث عن كيفية إنشاء قوالب مشروع Xcode وكيف ساعدوا في توفير الوقت في بداية المشروع.



أصبح لدى مطوري iOS الآن العديد من الأدوات لأتمتة الإجراءات الروتينية. في Surf نستخدم Generamba و Fastlane و SwiftGen و SwiftLint و Jenkins. وتبحث باستمرار عن طرق لأتمتة شيء آخر. وإذا أمضينا في وقت سابق من يوم إلى يومين في بدء مشروع جديد ، فلا يستغرق الأمر الآن أكثر من 4 ساعات.


ما الذي تحتاجه لبدء تطوير مشروع كبير؟

1. إنشاء مستودع.
- تكوين حقوق الوصول ؛
- إعداد الإخطارات في مطوري الدردشة.


2. إنشاء مشروع.
- إنشاء هيكل مجلد.
- إضافة العديد من الملفات المساعدة مثل جميع الملحقات المفضلة لديك.
- تكوين CI / CD.
- إضافة مختلف linter والمولدات (Generamba / SwiftLint / SwiftGen) ؛
- تشديد الإدمان.
- ...
بعد 1-2 يوم من العمل ، يمكنك البدء في التطوير الكامل.


من الواضح ، أن معظم هذه الخطوات يمكن أن يكون آليا. من الخيارات الممكنة في متناول اليد كانت:
- XcodeGen ؛
- قوالب لمشاريع Xcode.
- مشروع Xcode الأساسي.

XcodeGen

+ يسمح لك بإنشاء .xcodeproj أثناء التنقل باستخدام ملف التكوين ، الذي يضيف القدرة على التخلص من التعارضات في ملف المشروع.
- يستخدم بالاقتران مع البرامج النصية الأخرى ، لأنه يعمل فقط مع ملف المشروع ، دون التأثير على بقية الملفات.

قوالب مشروع Xcode

+ يمكنك إنشاء .xcodeproj مع جميع الإعدادات ، وكذلك أي ملفات إضافية.
- لا يوجد وثائق رسمية كاملة ووصف القوالب في XML.

مشروع Xcode الأساسي

+ تكوين بسرعة وعلى الفور مع جميع الملفات والتبعيات اللازمة.
- إعادة تشكيل لمشروع معين لفترة طويلة. ويمكنك تخطي خطوة بطريق الخطأ واطلاق النار على نفسك في القدم.

نتيجة لذلك ، استقرنا على استخدام مشاريع Xcode ، مما سمح لنا بتحسين العملية وتقليل الوقت اللازم لإنشاء مشروع. بدا مشروع Xcode الأساسي وكأنه عكاز ، ونحن لسنا بحاجة إلى المرونة التي توفرها البرامج النصية المخصصة.


قوالب مشروع Xcode


كما كتبت أعلاه ، باستخدام قوالب Xcode ، يمكنك إنشاء مشاريع iOS / macOS / tvOS / watchOS / Cross-platform وإضافة أي ملفات وإعدادات. المشكلة هي أن Apple لا تقدم أي مستندات لهذا الغرض. كل هذا - بضع دروس صغيرة وأمثلة من المتحمسين المختلفين ، استخدمت هذا الويكي.

ما هو خارج الصندوق
قوالب تطبيق 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.
الأجداد هم أولياء القالب الحالي. تدعم القوالب توارثًا متعددة ، أي أن تطبيق Single View يرث الخصائص من تطبيق Storyboard و Core Data Cocoa Touch Application.

هذا هو ما يشبه التسلسل الهرمي للتطبيق المنفرد.



إنشاء القالب الخاص بك

من الأفضل إضافة القوالب المخصصة إلى المكتبة المحلية ~ / 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. يشير المفتاح إلى الملف الذي نقوم بإنشائه أو تحريره. بعد المفتاح ، اضبط السطر الذي سيتم كتابته على هذا الملف. بدلاً من كتابة الأسطر يدويًا ، نشير إلى الملفات من الدليل مع القالب ونأخذها من هناك.

الآن خذ هذا الرمز ووضعه في ملف يسمى TemplateInfo.plist في مجلد CustomTemplate.xctemplate من دليل القوالب.

دعونا نرى ما حصلنا عليه. إذا سار كل شيء وفقًا للخطة ، فعند إنشاء مشروع في 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/ar460265/


All Articles