Skip to content

الترجمة 🌍

ساهم في ترجمة هذه الصفحة أو تحسينها.

ساهم

الملفات المُركبة

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

الموارد المستهدفة

تدعم مشاريع Xcode إضافة الموارد إلى الأهداف. ومع ذلك، فإنها تمثل للفرق بعض التحديات، خاصةً عند العمل مع مشروع معياري حيث يتم نقل المصادر والموارد في كثير من الأحيان:

  • وصول غير متسق لوقت التشغيل: يعتمد مكان انتهاء الموارد في المنتج النهائي وكيفية الوصول إليها على المنتج الهدف. على سبيل المثال، إذا كان هدفك يمثل تطبيقًا، يتم نسخ الموارد إلى حزمة التطبيق. يؤدي هذا إلى وصول الشيفرة البرمجية إلى الموارد التي تضع افتراضات على بنية الحزمة، وهو أمر غير مثالي لأنه يجعل من الصعب التفكير في الشيفرة البرمجية وتحريك الموارد.
  • المنتجات التي لا تدعم الموارد: هناك بعض المنتجات مثل المكتبات الثابتة التي ليست حزمًا وبالتالي لا تدعم الموارد. لهذا السبب، عليك إما أن تلجأ إلى نوع منتج مختلف، على سبيل المثال الأطر، التي قد تضيف بعض النفقات على مشروعك أو تطبيقك. على سبيل المثال، سيتم ربط الأُطر الثابتة بشكل ثابت بالمنتج النهائي، وستكون هناك حاجة إلى مرحلة بناء لنسخ الموارد إلى المنتج النهائي فقط. أو الأُطر الديناميكية، حيث سيقوم Xcode بنسخ كل من الثنائيات والموارد إلى المنتج النهائي، ولكن سيزيد ذلك من وقت بدء تشغيل تطبيقك لأن إطار العمل يحتاج إلى تحميله ديناميكيًا.
  • عرضة لأخطاء وقت التشغيل: يتم تحديد الموارد من خلال اسمها وامتدادها (سلاسل). لذلك، فإن أي خطأ مطبعي في أي منها سيؤدي إلى خطأ في وقت التشغيل عند محاولة الوصول إلى المورد. هذا ليس مثاليًا لأنه لا يتم اكتشافه في وقت التحويل البرمجي وقد يؤدي إلى أعطال في الإصدار.

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

موصى به

على الرغم من أن الوصول إلى الموارد من خلال واجهة تويست-التركيبية ليس إلزاميًا، إلا أننا نوصي به لأنه يسهل من عملية التفكير في الشيفرة البرمجية ومن حركة الموارد.

الموارد

يوفر Tuist واجهات للإعلان عن محتوى الملفات مثل Info.plist أو الاستحقاقات في Swift. هذا مفيد لضمان الاتساق عبر الأهداف والمشاريع، والاستفادة من المحول البرمجي لاكتشاف المشكلات في وقت التحويل البرمجي. يمكنك أيضًا ابتكار تجريداتك الخاصة لنمذجة المحتوى ومشاركته عبر الأهداف والمشاريع.

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

GITIGNORE THE DERIVIVED DIREDUCTORY

نوصي بإضافة الدليل المشتق إلى ملف .gitignore الخاص بمشروعك.

ملحقات الحزمة

يقوم تويست بتجميع واجهة للوصول إلى الحزمة التي تحتوي على الموارد المستهدفة.

سويفت

سيحتوي الهدف على امتداد للنوع Bundle الذي يعرض الحزمة:

swift
let bundle = Bundle.module

الهدف-ج

في Objective-C، ستحصل في Objective-C على واجهة {الهدف}Resources للوصول إلى الحزمة:

objc
NSBundle *bundle = [MyFeatureResources bundle];

التقييد بالمعايير الداخلية

في الوقت الحالي، لا ينشئ تويست حاليًا وصولات حزم الموارد للأهداف الداخلية التي تحتوي على مصادر Objective-C فقط. هذا قيد معروف تم تتبعه في [المشكلة رقم 6456] (https://github.com/tuist/tuist/issues/6456).

دعم الموارد في المكتبات من خلال الحزم

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

ملحقات الموارد

يتم تحديد الموارد من خلال اسمها وامتدادها باستخدام السلاسل. هذا ليس مثاليًا لأنه لا يتم التقاطه في وقت التحويل البرمجي وقد يؤدي إلى أعطال في الإصدار. ولمنع ذلك، يدمج تويست [SwiftGen] (https://github.com/SwiftGen/SwiftGen) في عملية توليد المشروع لتجميع واجهة للوصول إلى الموارد. وبفضل ذلك، يمكنك الوصول بثقة إلى الموارد بالاستفادة من المحول البرمجي لاكتشاف أي مشاكل.

يتضمّن تويست [قوالب] (https://github.com/tuist/tuist/tree/main/Sources/TuistGenerator/Templates) لتوليف المعالجات لأنواع الموارد التالية افتراضيًا:

نوع الموردملف مركب
الصور والألوانالأصول+{الهدف}.سويفت
الأوتارسلاسل+{الهدف}.سويفت
القوائم{NameOfPlist}.swift
الخطوطالخطوط +{الهدف}.سويفت
الملفاتملفات+{الهدف}.سويفت

ملاحظة: يمكنك تعطيل تجميع ملحقات الموارد على أساس كل مشروع على حدة عن طريق تمرير الخيار disableSynthesizedResourcesAccessors إلى خيارات المشروع.

قوالب مخصصة

إذا كنت ترغب في توفير قوالبك الخاصة لتوليف الوصولات لأنواع الموارد الأخرى، والتي يجب أن تكون مدعومة من قبل [SwiftGen] (https://github.com/SwiftGen/SwiftGen)، يمكنك إنشاؤها على Tuist/Tist/ResourceSynthesizizers/{name}.stencil ، حيث يكون الاسم هو النسخة التي تحمل اسم المورد بحرف الجمل.

الموارداسم القالب
الخيوطسلاسل.استنسل
الأصولالأصول.استنسل
القوائمالقوائم.استنسل
الخطوطالخطوط.استنسل
البيانات الأساسيةCoreData.stencil.stencil
منشئ الواجهةInterfaceBuilder.stencil.stencil
jsonJSON.stencil
يملYAML.stencil.stencil
الملفاتملفات.استنسل

إذا كنت ترغب في تكوين قائمة بأنواع الموارد لتوليف الملحقات الخاصة بها، يمكنك استخدام خاصية Project.resourceSynthesizizizers مع تمرير قائمة مُركِّبات الموارد التي تريد استخدامها:

swift
let project = Project(resourceSynthesizers: [.string(), .fonts()])

مرجعية

يمكنك الاطلاع على [هذا التركيب] (https://github.com/tuist/tuist/tree/main/cli/Fixtures/ios_app_with_templates) للاطلاع على مثال لكيفية استخدام القوالب المخصصة لتجميع الوصولات إلى الموارد.

Released under the MIT License.