يهدف تطبيق Carthage إلى أن يكون أبسط طريقة لإضافة أطر عمل إلى تطبيق Cocoa الخاص بك.
تقوم Carthage ببناء تبعياتك وتوفر لك أطر عمل ثنائية، لكنك تحتفظ بالتحكم الكامل في بنية المشروع وإعداداته. لا يقوم Carthage بتعديل ملفات مشروعك أو إعدادات البناء الخاصة بك تلقائيًا.
احصل على Carthage عن طريق تشغيل brew install carthage
أو اختيار طريقة تثبيت أخرى
قم بإنشاء ملف Cartfile في نفس الدليل الذي يوجد به .xcodeproj
أو .xcworkspace
قم بإدراج التبعيات المطلوبة في ملف Cartfile، على سبيل المثال:
github "Alamofire/Alamofire" ~> 5.5
قم بتشغيل carthage update --use-xcframeworks
سيظهر ملف Cartfile.resolved
ودليل Carthage
في نفس الدليل الذي يوجد به .xcodeproj
أو .xcworkspace
اسحب حزم .xcframework
المضمنة من Carthage/Build
إلى قسم "Frameworks and Libraries" في مشروع Xcode الخاص بتطبيقك.
إذا كنت تستخدم تطبيق Carthage، فاختر "Embed & Sign"، وإلا "Do Not Embed".
للحصول على دليل متعمق، تابع القراءة من إضافة إطارات عمل إلى تطبيق ما
هناك خيارات متعددة لتثبيت قرطاج:
برنامج التثبيت: قم بتنزيل وتشغيل ملف Carthage.pkg
للحصول على أحدث إصدار، ثم اتبع التعليمات التي تظهر على الشاشة. إذا كنت تقوم بتثبيت pkg عبر CLI، فقد تحتاج إلى تشغيل sudo chown -R $(whoami) /usr/local
أولاً.
Homebrew: يمكنك استخدام Homebrew وتثبيت أداة carthage
على نظامك ببساطة عن طريق تشغيل brew update
brew install carthage
. (ملاحظة: إذا قمت مسبقًا بتثبيت الإصدار الثنائي من Carthage، فيجب عليك حذف /Library/Frameworks/CarthageKit.framework
).
MacPorts: يمكنك استخدام MacPorts وتثبيت أداة carthage
على نظامك ببساطة عن طريق تشغيل sudo port selfupdate
و sudo port install carthage
. (ملاحظة: إذا قمت مسبقًا بتثبيت الإصدار الثنائي من Carthage، فيجب عليك حذف /Library/Frameworks/CarthageKit.framework
).
من المصدر: إذا كنت ترغب في تشغيل أحدث إصدار من التطوير (والذي قد يكون غير مستقر أو غير متوافق إلى حد كبير)، فما عليك سوى استنساخ الفرع master
للمستودع، ثم تشغيل make install
. يتطلب Xcode 10.0 (سويفت 4.2).
بمجرد تثبيت Carthage، يمكنك البدء في إضافة أطر عمل إلى مشروعك. لاحظ أن Carthage يدعم فقط الأطر الديناميكية، المتوفرة فقط على نظام التشغيل iOS 8 أو الإصدارات الأحدث (أو أي إصدار من OS X).
carthage update --use-xcframeworks
. سيؤدي هذا إلى جلب التبعيات إلى مجلد Carthage/Checkouts وإنشاء كل منها أو تنزيل XCFramework المترجم مسبقًا.نحن نشجع استخدام XCFrameworks اعتبارًا من الإصدار 0.37.0 (يناير 2021)، ونطلب XCFrameworks عند البناء على جهاز Apple Silicon Mac. يتطلب التبديل من حزم إطار العمل المنفصلة إلى XCFrameworks بعض التغييرات على مشروعك:
Carthage/Build
الخاص بك لإزالة أي حزم إطارية موجودة.carthage build --use-xcframeworks
. يمكن توفير أي وسيطات أخرى تستخدمها في البناء كالمعتاد.carthage copy-frameworks
الخاصة بالهدف، إذا كانت موجودة.عدم توافق Xcode 12+ : لا يتم دعم الأنظمة الأساسية متعددة البنى التحتية عند إنشاء حزم إطار العمل في Xcode 12 والإصدارات الأحدث. تفضل البناء باستخدام XCFrameworks. إذا كنت بحاجة إلى إنشاء حزم إطار عمل منفصلة، فاستخدم ملف xcconfig للحل البديل.
carthage update --platform macOS
. سيؤدي هذا إلى جلب التبعيات إلى مجلد Carthage/Checkouts وإنشاء كل واحدة منها أو تنزيل إطار عمل مُجمَّع مسبقًا.بالإضافة إلى ذلك، ستحتاج إلى نسخ رموز التصحيح لتصحيح الأخطاء والإبلاغ عن الأعطال على نظام التشغيل OS X.
قم بإنشاء ملف Cartfile الذي يسرد الأطر التي ترغب في استخدامها في مشروعك.
قم بتشغيل carthage update
. سيؤدي هذا إلى جلب التبعيات إلى مجلد Carthage/Checkouts، ثم إنشاء كل واحدة منها أو تنزيل إطار عمل مُجمَّع مسبقًا.
افتح علامة التبويب "الإعدادات العامة " لأهداف تطبيقك. بالنسبة إلى Xcode 11.0 والإصدارات الأحدث، في قسم "Frameworks، Libraries، and Embedded Content"، قم بسحب وإسقاط كل إطار عمل تريد استخدامه من مجلد Carthage/Build على القرص. ثم، في قسم "التضمين"، حدد "عدم التضمين" من القائمة المنسدلة لكل عنصر تمت إضافته. بالنسبة إلى Xcode 10.x والإصدارات الأقدم، في قسم "إطارات العمل والمكتبات المرتبطة"، قم بسحب وإفلات كل إطار عمل تريد استخدامه من مجلد Carthage/Build الموجود على القرص.
في علامة تبويب إعدادات مراحل إنشاء أهداف تطبيقك، انقر فوق الرمز + واختر New Run Script Phase . قم بإنشاء برنامج نصي للتشغيل تحدد فيه الصدفة الخاصة بك (على سبيل المثال: /bin/sh
)، وأضف المحتويات التالية إلى منطقة البرنامج النصي أسفل الصدفة:
/usr/local/bin/carthage copy-frameworks
أنشئ ملفًا باسم input.xcfilelist
وملفًا باسم output.xcfilelist
قم بإضافة المسارات إلى الأطر التي تريد استخدامها إلى input.xcfilelist
الخاص بك. على سبيل المثال:
$(SRCROOT)/Carthage/Build/iOS/Result.framework
$(SRCROOT)/Carthage/Build/iOS/ReactiveSwift.framework
$(SRCROOT)/Carthage/Build/iOS/ReactiveCocoa.framework
قم بإضافة المسارات إلى الأطر المنسوخة إلى output.xcfilelist
. على سبيل المثال:
$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/Result.framework
$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/ReactiveSwift.framework
$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/ReactiveCocoa.framework
مع تحديد ملفات الإخراج إلى جانب ملفات الإدخال، يحتاج Xcode فقط إلى تشغيل البرنامج النصي عندما تتغير ملفات الإدخال أو تكون ملفات الإخراج مفقودة. وهذا يعني أن الإصدارات القذرة ستكون أسرع عندما لا تقوم بإعادة بناء الإطارات باستخدام Carthage.
أضف input.xcfilelist
إلى قسم "قوائم ملفات الإدخال" في مرحلة البرنامج النصي لتشغيل Carthage
قم بإضافة ملف output.xcfilelist
إلى قسم "قوائم ملفات الإخراج" في مرحلة البرنامج النصي لتشغيل Carthage
يعمل هذا البرنامج النصي على التغلب على خطأ إرسال App Store الناتج عن الثنائيات العالمية ويضمن نسخ الملفات الضرورية المتعلقة برمز البت وdSYMs عند الأرشفة.
من خلال نسخ معلومات التصحيح إلى دليل المنتجات المضمنة، سيتمكن Xcode من ترميز تتبع المكدس عندما تتوقف عند نقطة توقف. سيمكنك هذا أيضًا من التنقل عبر التعليمات البرمجية لجهة خارجية في مصحح الأخطاء.
عند أرشفة تطبيقك لتقديمه إلى App Store أو TestFlight، سيقوم Xcode أيضًا بنسخ هذه الملفات إلى الدليل الفرعي dSYMs لحزمة .xcarchive
لتطبيقك.
على طول الطريق، ستكون قرطاج قد صنعت بعض القطع الأثرية. وأهم هذه الملفات هو الملف Cartfile.resolved، الذي يسرد الإصدارات التي تم إنشاؤها بالفعل لكل إطار عمل. تأكد من الالتزام بـ Cartfile.resolved ، لأن أي شخص آخر يستخدم المشروع سيحتاج إلى هذا الملف لإنشاء نفس إصدارات إطار العمل.
يمكنك إضافة مرحلة تشغيل البرنامج النصي لتحذيرك تلقائيًا عندما تصبح إحدى تبعياتك قديمة.
Build Phases
أهداف تطبيقك، انقر فوق الرمز +
واختر New Run Script Phase
. قم بإنشاء برنامج نصي للتشغيل تحدد فيه الصدفة الخاصة بك (على سبيل المثال: /bin/sh
)، وأضف المحتويات التالية إلى منطقة البرنامج النصي أسفل الصدفة: /usr/local/bin/carthage outdated --xcode-warnings 2> /dev/null
ستتحقق Carthage للتأكد من أن أطر عمل Swift (و Objective-C/Swift المختلطة) التي تم تنزيلها قد تم إنشاؤها باستخدام نفس إصدار Swift المستخدم محليًا. إذا كان هناك عدم تطابق في الإصدار، فسوف تستمر قرطاج في بناء إطار العمل من المصدر. إذا لم يكن من الممكن بناء الإطار من المصدر، فسوف تفشل قرطاج.
نظرًا لأن Carthage يستخدم مخرجات xcrun swift --version
لتحديد إصدار Swift المحلي، تأكد من تشغيل أوامر Carthage باستخدام سلسلة أدوات Swift التي تنوي استخدامها. بالنسبة للعديد من حالات الاستخدام، ليست هناك حاجة إلى أي شيء إضافي. ومع ذلك، على سبيل المثال، إذا كنت تقوم بإنشاء مشروع Swift 2.3 باستخدام Xcode 8.x، فإن إحدى الطرق لتحديد swift
الافتراضي لـ carthage bootstrap
هي استخدام الأمر التالي:
TOOLCHAINS=com.apple.dt.toolchain.Swift_2_3 carthage bootstrap
بعد الانتهاء من الخطوات المذكورة أعلاه ودفع التغييرات، يحتاج المستخدمون الآخرون للمشروع فقط إلى جلب المستودع وتشغيل carthage bootstrap
للبدء في أطر العمل التي أضفتها.
إن استخدام Carthage لتبعيات أي هدف عشوائي يشبه إلى حد ما استخدام Carthage للتطبيق. يكمن الاختلاف الرئيسي في كيفية إعداد أطر العمل وربطها فعليًا في Xcode.
نظرًا لأن أهداف اختبار الوحدة تفتقد قسم أطر العمل والمكتبات المرتبطة في علامة تبويب الإعدادات العامة الخاصة بها، فيجب عليك بدلاً من ذلك سحب الأطر المبنية إلى مرحلة بناء ربط الثنائيات بالمكتبات .
في هدف الاختبار ضمن علامة التبويب إعدادات البناء ، أضف @loader_path/Frameworks
إلى Runpath Search Paths إذا لم يكن موجودًا بالفعل.
في حالات نادرة، قد ترغب أيضًا في نسخ كل تبعية إلى منتج البناء (على سبيل المثال، لتضمين التبعيات داخل الإطار الخارجي، أو التأكد من وجود التبعيات في حزمة اختبار). للقيام بذلك، قم بإنشاء مرحلة إنشاء نسخ ملفات جديدة باستخدام وجهة الإطارات ، ثم قم بإضافة مرجع إطار العمل هناك أيضًا. لا يجب عليك استخدام الأمر carthage copy-frameworks
نظرًا لأن حزم الاختبار لا تحتاج إلى تجريد الإطارات، كما أن تشغيل المثيلات المتزامنة copy-frameworks
(مع تشغيل البنيات المتوازية) غير مدعوم.
إذا قمت بتعديل ملف Cartfile الخاص بك، أو كنت ترغب في التحديث إلى أحدث الإصدارات من كل إطار عمل (مع مراعاة المتطلبات التي حددتها)، فما عليك سوى تشغيل أمر carthage update
مرة أخرى.
إذا كنت تريد تحديث تبعية واحدة فقط أو معينة، فقم بتمريرها كقائمة مفصولة بمسافات إلى أمر update
. على سبيل المثال
carthage update Box
أو
carthage update Box Result
تمت إعادة كتابة منطق ترقية الأطر بهدف زيادة السرعة وتقليل استخدام الذاكرة. إنها حاليًا ميزة الاشتراك. ويمكن استخدامه عن طريق تمرير --new-resolver
إلى أمر التحديث، على سبيل المثال،
carthage update --new-resolver Box
إذا كنت تواجه مشكلات في الأداء أثناء التحديثات، فيرجى تجربة المحلل الجديد
إذا كان إطار العمل الذي تريد إضافته إلى مشروعك يحتوي على تبعيات مدرجة بشكل واضح في ملف Cartfile، فسوف يقوم Carthage باستعادتها لك تلقائيًا. سيتعين عليك بعد ذلك سحبها بنفسك إلى مشروعك من مجلد Carthage/Build.
إذا كان إطار العمل المضمن في مشروعك يحتوي على تبعيات لأطر عمل أخرى، فيجب عليك ربطها بهدف التطبيق (حتى لو كان هدف التطبيق لا يعتمد على تلك الأطر ولا يستخدمها أبدًا).
افتراضيًا، سيقوم Carthage بفحص الملفات المصدرية للتبعيات مباشرة في مجلد المشروع الخاص بك، مما يترك لك الالتزام بها أو تجاهلها حسب اختيارك. إذا كنت ترغب في إتاحة التبعيات كوحدات فرعية لـ Git بدلاً من ذلك (ربما حتى تتمكن من الالتزام بالتغييرات ودفعها داخلها)، فيمكنك تشغيل carthage update
أو carthage checkout
باستخدام علامة --use-submodules
.
عند التشغيل بهذه الطريقة، سيقوم Carthage بالكتابة إلى .gitmodules
وملفات .git/config
الخاصة بمستودعك، ويقوم تلقائيًا بتحديث الوحدات الفرعية عندما تتغير إصدارات التبعيات.
إذا كنت تريد العمل على تبعياتك أثناء التطوير، وتريد إعادة بنائها تلقائيًا عند إنشاء مشروعك الأصلي، فيمكنك إضافة مرحلة بناء Run Script التي تستدعي Carthage كما يلي:
/usr/local/bin/carthage build --platform " $PLATFORM_NAME " --project-directory " $SRCROOT "
لاحظ أنه يجب عليك استخدام الوحدات الفرعية قبل القيام بذلك، لأنه لا ينبغي تعديل عمليات السحب البسيطة مباشرةً.
افتراضيًا، ستقوم Carthage بإعادة بناء التبعية بغض النظر عما إذا كانت هي نفس النسخة التي تم حلها كما كانت من قبل. سيؤدي تمرير --cache-builds
إلى تجنب قرطاج إعادة بناء التبعية إذا كان ذلك ممكنًا. راجع المعلومات الخاصة بملفات الإصدار للحصول على تفاصيل حول كيفية قيام Carthage بهذا التخزين المؤقت.
ملحوظة: في الوقت الحالي، --cache-builds
غير متوافق مع --use-submodules
. سيؤدي استخدام كليهما إلى عدم إعادة بناء نسخة العمل والتغييرات الملتزم بها على تبعية الوحدة الفرعية الخاصة بك بشكل صحيح. انظر رقم 1785 لمزيد من التفاصيل.
الإكمال التلقائي لأوامر وخيارات Carthage متاح كما هو موثق في Bash/Zsh/Fish Completion.
قرطاج يدعم رسميا الأطر الديناميكية فقط . يمكن استخدام الأطر الديناميكية على أي إصدار من OS X، ولكن فقط على نظام التشغيل iOS 8 أو الإصدارات الأحدث . بالإضافة إلى ذلك، منذ الإصدار 0.30.0، تدعم قرطاج الأطر الثابتة .
نظرًا لعدم وجود قائمة حزم مركزية في قرطاج، ولا يوجد تنسيق لمواصفات المشروع، يجب أن يتم بناء معظم الأطر تلقائيًا .
المتطلبات المحددة لأي مشروع إطاري مذكورة أدناه.
ستقوم Carthage فقط ببناء مخططات Xcode التي تتم مشاركتها من .xcodeproj
الخاص بك. يمكنك معرفة ما إذا كانت جميع مخططاتك المقصودة قد تم بناؤها بنجاح عن طريق تشغيل carthage build --no-skip-current
، ثم التحقق من مجلد Carthage/Build.
إذا لم يتم إنشاء مخطط مهم عند تشغيل هذا الأمر، فافتح Xcode وتأكد من وضع علامة على المخطط على أنه مشترك ، حتى تتمكن قرطاج من اكتشافه.
إذا واجهت فشلًا في البناء في carthage build --no-skip-current
، فحاول تشغيل xcodebuild -scheme SCHEME -workspace WORKSPACE build
أو xcodebuild -scheme SCHEME -project PROJECT build
(مع القيم الفعلية) ومعرفة ما إذا كان نفس الفشل قد حدث هناك. ومن المفترض أن ينتج عن ذلك معلومات كافية لحل المشكلة.
إذا كان لديك إصدارات متعددة من أدوات مطور Apple مثبتة (إصدار تجريبي من Xcode، على سبيل المثال)، فاستخدم xcode-select
لتغيير الإصدار الذي تستخدمه Carthage.
إذا كنت لا تزال غير قادر على بناء إطار العمل الخاص بك باستخدام Carthage، يرجى فتح مشكلة وسنكون سعداء بمساعدتك!
تحدد Carthage إصدارات إطار العمل المتوفرة لديك من خلال البحث في العلامات المنشورة في المستودع، ومحاولة تفسير كل اسم علامة كإصدار دلالي. على سبيل المثال، في العلامة v1.2
، الإصدار الدلالي هو 1.2.0.
العلامات التي لا تحتوي على أي رقم إصدار، أو التي تحتوي على أي أحرف تتبع رقم الإصدار (على سبيل المثال، 1.2-alpha-1
) غير مدعومة حاليًا، وسيتم تجاهلها.
يمكن لـ Carthage استخدام أطر العمل المعدة مسبقًا تلقائيًا، بدلاً من البناء من الصفر، إذا كانت مرفقة بإصدار GitHub في مستودع مشروعك أو عبر ملف تعريف المشروع الثنائي.
لتقديم أطر عمل تم إنشاؤها مسبقًا لعلامة معينة، يجب تجميع الثنائيات لجميع الأنظمة الأساسية المدعومة معًا في أرشيف واحد ، ويجب إرفاق هذا الأرشيف بإصدار منشور يتوافق مع تلك العلامة. يجب أن يتضمن المرفق .framework
في اسمه (على سبيل المثال، ReactiveCocoa.framework.zip
)، للإشارة إلى Carthage أنه يحتوي على ثنائيات. بنية دليل الأرشيف هي صيغة حرة، ولكن يجب أن تظهر الإطارات مرة واحدة فقط في الأرشيف حيث سيتم نسخها إلى Carthage/Build/<platform>
بناءً على اسمها (على سبيل المثال ReactiveCocoa.framework
).
لتقديم XCFrameworks المُنشأة مسبقًا، قم بالإنشاء باستخدام --use-xcframeworks
واتبع نفس العملية لضغط جميع XCFrameworks في أرشيف واحد. قم بتضمين .xcframework
في اسم المرفق. بدءًا من الإصدار 0.38.0، تفضل Carthage تنزيل مرفقات .xcframework
عند تمرير --use-xcframeworks
.
يمكنك إجراء عملية الأرشفة باستخدام برنامج Carthage نفسه باستخدام:
-carthage build --no-skip-current
-carthage archive YourFrameworkName
أو بدلا من ذلك
carthage build --archive
سيتم تجاهل مسودات الإصدارات تلقائيًا، حتى لو كانت تتوافق مع العلامة المطلوبة.
من الممكن استخدام travis-ci لإنشاء إصداراتك الموسومة وتحميلها.
قم بتثبيت ترافيس CLI مع gem install travis
إعداد travis-ci لمستودعك (الخطوتان 1 و2)
قم بإنشاء ملف .travis.yml
في جذر مستودعك بناءً على هذا القالب. قم بتعيين FRAMEWORK_NAME
على القيمة الصحيحة.
استبدل PROJECT_PLACEHOLDER وSCHEME_PLACEHOLDER
إذا كنت تستخدم مساحة عمل بدلاً من مشروع، فقم بإزالة سطر xcode_project وقم بإلغاء التعليق على سطر xcode_workspace.
يجب أن يكون المشروع بالتنسيق: MyProject.xcodeproj
يجب أن تكون مساحة العمل بالتنسيق: MyWorkspace.xcworkspace
لا تتردد في تحديث قيمة xcode_sdk
إلى SDK آخر، لاحظ أن الاختبار على iphoneos SDK سيتطلب منك تحميل هوية توقيع التعليمات البرمجية
لمزيد من المعلومات، يمكنك زيارة مستندات ترافيس لمشاريع الهدف-ج
language : objective-c
osx_image : xcode7.3
xcode_project : <PROJECT_PLACEHOLDER>
# xcode_workspace: <WORKSPACE_PLACEHOLDER>
xcode_scheme : <SCHEME_PLACEHOLDER>
xcode_sdk : iphonesimulator9.3
env :
global :
- FRAMEWORK_NAME=<THIS_IS_A_PLACEHOLDER_REPLACE_ME>
before_install :
- brew update
- brew outdated carthage || brew upgrade carthage
before_script :
# bootstrap the dependencies for the project
# you can remove if you don't have dependencies
- carthage bootstrap
before_deploy :
- carthage build --no-skip-current
- carthage archive $FRAMEWORK_NAME
قم بتشغيل travis setup releases
، واتبع الوثائق هنا
سيقوم هذا الأمر بتشفير بيانات اعتماد GitHub الخاصة بك في ملف .travis.yml
للسماح لـ travis بتحميل الإصدار إلى GitHub.com. عندما يُطلب منك تحميل الملف، أدخل $FRAMEWORK_NAME.framework.zip
قم بتحديث قسم النشر ليتم تشغيله على العلامات:
في .travis.yml
حدد موقع:
on :
repo : repo/repo
وأضف tags: true
و skip_cleanup: true
:
skip_cleanup : true
on :
repo : repo/repo
tags : true
سيسمح ذلك لـ Travis بمعرفة كيفية إنشاء عملية نشر عند دفع علامة جديدة ومنع Travis من تنظيف الملف المضغوط الذي تم إنشاؤه
إذا قمت بتضمين العديد من أطر العمل الديناميكية في تطبيقك، فقد تكون أوقات التشغيل الأولية الخاصة به بطيئة جدًا. تستطيع Carthage المساعدة في التخفيف من ذلك من خلال بناء أطرك الديناميكية كأطر ثابتة بدلاً من ذلك. يمكن ربط الأطر الثابتة مباشرة بالتطبيق الخاص بك أو دمجها معًا في إطار عمل ديناميكي أكبر مع بعض التعديلات البسيطة على سير عملك، مما قد يؤدي إلى تخفيضات كبيرة في أوقات التشغيل قبل التشغيل الرئيسي.
منذ الإصدار 0.30.0، يقدم مشروع Carthage الدعم للأطر المرتبطة بشكل ثابت والمكتوبة بلغة Swift أو Objective-C، والتي تم تقديم الدعم لها في Xcode 9.4. يرجى ملاحظة أنه يشير على وجه التحديد إلى الأطر ، وبالتالي فإن حزم داروين ذات امتداد .framework وأرشيفات الكائنات المرتبطة بشكل ثابت بالداخل. لا تدعم قرطاج حاليًا مخططات المكتبات الثابتة، ولا توجد أي خطط لتقديم دعمها في المستقبل.
يختلف سير العمل بالكاد:
لكن:
راجع مستند StaticFrameworks للحصول على التفاصيل.
يرجى ملاحظة أن بعض التحذيرات تنطبق على هذا النهج:
هل تريد الإعلان عن إمكانية الاستفادة من مشروعك مع قرطاج؟ يمكنك إضافة شارة التوافق:
… إلى README
الخاص بك، وذلك ببساطة عن طريق إدخال Markdown التالي:
[ ![ Carthage compatible ] ( https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat )] ( https://github.com/Carthage/Carthage )
لا يمكن تصحيح أخطاء إطار العمل المبني مسبقًا باستخدام تنفيذ الخطوة على جهاز آخر غير الذي تم إنشاء إطار العمل عليه. ببساطة، يجب أن يقوم carthage bootstrap/build/update --no-use-binaries
بإصلاح هذه المشكلة، ولكن لمزيد من الحلول الآلية، راجع #924. Dupe rdar://23551273 إذا كنت تريد من Apple إصلاح السبب الجذري لهذه المشكلة.
معظم وظائف أداة سطر أوامر carthage
مغلفة فعليًا في إطار عمل يسمى CarthageKit.
إذا كنت مهتمًا باستخدام Carthage كجزء من أداة أخرى، أو ربما توسيع وظائف Carthage، فقم بإلقاء نظرة على كود مصدر CarthageKit لمعرفة ما إذا كانت واجهة برمجة التطبيقات (API) تناسب احتياجاتك.
CocoaPods هو مدير تبعية طويل الأمد لـ Cocoa. فلماذا أنشئت قرطاج؟
أولاً، يقوم CocoaPods (افتراضيًا) تلقائيًا بإنشاء وتحديث مساحة عمل Xcode لتطبيقك وجميع التبعيات. تقوم Carthage ببناء ثنائيات الإطار باستخدام xcodebuild
، لكنها تترك مسؤولية دمجها للمستخدم. يعد نهج CocoaPods أسهل في الاستخدام، في حين أن نهج Carthage مرن وغير تدخلي.
تم إدراج هدف CocoaPods في الملف التمهيدي الخاص به على النحو التالي:
... لتحسين إمكانية اكتشاف مكتبات الطرف الثالث مفتوحة المصدر والمشاركة فيها، من خلال إنشاء نظام بيئي أكثر مركزية.
على النقيض من ذلك، تم إنشاء قرطاج كمدير تبعية لامركزية . لا توجد قائمة مركزية للمشاريع، مما يقلل من أعمال الصيانة ويتجنب أي نقطة فشل مركزية. ومع ذلك، يعد اكتشاف المشروع أكثر صعوبة، حيث يجب على المستخدمين اللجوء إلى صفحات GitHub الشائعة أو ما شابه ذلك.
يجب أن تحتوي مشاريع CocoaPods أيضًا على ما يُعرف بملف podspec، والذي يتضمن بيانات وصفية حول المشروع ويحدد كيفية إنشائه. تستخدم Carthage xcodebuild
لبناء التبعيات، فبدلاً من دمجها في مساحة عمل واحدة، لا تحتوي على ملف مواصفات مماثل ولكن يجب أن تتضمن تبعياتك مشروع Xcode الخاص بها الذي يصف كيفية إنشاء منتجاتها.
في النهاية، أنشأنا Carthage لأننا أردنا أبسط أداة ممكنة - مدير التبعية الذي ينجز المهمة دون تولي مسؤولية Xcode، ودون إنشاء عمل إضافي لمؤلفي إطار العمل. يقدم CocoaPods العديد من الميزات الرائعة التي لن تتوفر في قرطاج أبدًا، وذلك على حساب التعقيد الإضافي.
تم إصدار قرطاج بموجب ترخيص MIT.
يتم إصدار صورة خلفية الرأس بموجب ترخيص CC BY-NC-SA 2.0. الصورة الأصلية لريتشارد مورتيل.