Gym (Fastlane): ما هو، بناء IPA والأتمتة في تطوير التطبيقات

المؤلف: IT Sectr نُشر: 2026-04-14 وقت القراءة: 9 دق

Gym (Fastlane) هي أداة لبناء وتوقيع تطبيقات iOS إلى صيغة IPA عبر سطر الأوامر. على عكس Xcode الذي يتطلب اختياراً يدوياً للمخطط والملف الشخصي، يقوم Gym بأتمتة عملية التصدير والتغليف بأكملها. وفقاً للوثائق الرسمية لـ Fastlane (2026)، فإن Gym يقلل وقت البناء بنسبة 30% بفضل تحسين معلمات xcodebuild والمعالجة المتوازية للموارد.

الوجبات الرئيسية

  • Gym هي أداة مساعدة من Fastlane للبناء التلقائي لتطبيقات iOS إلى IPA بواجهة سطر أوامر موحدة.
  • تعمل الأداة فوق xcodebuild ولكنها تخفي علامات التصدير المعقدة وتختار تلقائياً طريقة التوقيع الصحيحة.
  • يدعم Gym البناء لجميع أنواع الملفات الشخصية: development وappstore وadhoc وenterprise — عبر معامل export_method.
  • يتم التكوين عبر ملف Gymfile، والذي يمكن التحكم في إصداراته في مستودع المشروع مع الكود المصدري.
  • يتيح التكامل مع CI/CD تشغيل بناء IPA تلقائياً بعد كل push إلى المستودع دون تدخل المطور.

ما هو Gym (Fastlane)؟

Gym (Fastlane) هو مكون من نظام Fastlane البيئي يقوم ببناء تطبيقات iOS إلى صيغة IPA بأمر طرفية واحد. يقوم بتجريد العملية المعقدة لاستدعاء xcodebuild بعشرات العلامات ويوفر للمطور واجهة بسيطة بقيم افتراضية معقولة.

في Xcode، لبناء IPA يلزم فتح المشروع واختيار مخطط وتكوين Archive وExport وتحديد طريقة التوزيع وانتظار الانتهاء. أتمتة البناء عبر Gym تلغي الخطوات اليدوية وتضمن أن كل بناء يتم تنفيذه بمعاملات متطابقة — وهذا أمر بالغ الأهمية لخطوط أنابيب CI/CD القابلة للتنبؤ.

وفقاً لـ SwiftLee (2024)، فإن الفرق التي تستخدم Gym للبناء تقضي وقتاً أقل بنسبة 40% في تكوين عملية الإصدار مقارنة بالتصدير اليدوي عبر Xcode Organizer. كما يقوم Gym بتوليد سجلات بناء مفصلة مع كل خطوة من xcodebuild، مما يبسط تصحيح أخطاء البنيات الفاشلة وتحليل أخطاء التجميع.

استخدم Gym في أي مشروع iOS يتطلب بناء IPA بشكل منتظم للاختبار أو النشر — إنها الطريقة الوحيدة لضمان تكوين بناء متطابق على جميع أجهزة الفريق.

كيف يبني Gym IPA: العملية والمعاملات

عملية بناء IPA عبر Gym

يتكون بناء IPA عبر Gym من ثلاث مراحل متتالية: أرشفة المشروع عبر xcodebuild، وتصدير الأرشيف إلى حزمة ثنائية، وتغليفها بصيغة IPA مع التوقيع. يكتشف Gym تلقائياً نوع المشروع (هدف واحد أو workspace) ويختار طريقة البناء الصحيحة.

في مرحلة الأرشفة، يقوم Gym بتشغيل xcodebuild archive مع معاملات المخطط والتكوين المحددة في المشروع. بعد إنشاء الأرشيف بنجاح .xcarchive، يقوم Gym بتشغيل xcodebuild -exportArchive بطريقة التصدير المختارة. تصدير IPA هو عملية تحويل .xcarchive إلى ملف .ipa قابل للتثبيت يتضمن جميع الموارد والتوقيعات اللازمة.

معاملات تصدير البناء

تحدد طريقة التصدير نوع Provisioning Profile الذي سيتم استخدامه لتوقيع IPA. يدعم Gym أربع طرق: development للتصحيح على أجهزة المطورين، وapp-store للنشر في App Store، وad-hoc للاختبار التجريبي على عدد محدود من الأجهزة، وenterprise للتوزيع المؤسسي.

تتضمن المعاملات الإضافية تحديد export_options_plist لتكوين تصدير دقيق، وقمع Swift overlay لتقليل حجم IPA، وإدارة bitcode. كما يدعم Gym بناء المحاكي عبر العلم --skip_package_ipa، وهو مفيد للتحقق السريع من الكود دون تصدير كامل.

bash
# بناء أساسي لـ IPA عبر Gym
fastlane gym --workspace "MyApp.xcworkspace" --scheme "MyApp"

# بناء مع تحديد طريقة التصدير
fastlane gym --export_method app-store

# بناء الأرشيف فقط دون تصدير IPA
fastlane gym --skip_package_ipa

تكوين Gym عبر Gymfile

Gymfile هو ملف تكوين Fastlane يخزن جميع معاملات البناء بتنسيق Ruby منظم. على عكس تمرير العلامات عبر سطر الأوامر، يتيح Gymfile تثبيت التكوين في المستودع وضمان استخدام جميع المطورين وCI لإعدادات بناء متطابقة.

ruby
# Gymfile — إعداد البناء
workspace("MyApp.xcworkspace")
scheme("MyApp")
export_method(:app-store)
configuration("Release")
output_directory("./build")
output_name("MyApp.ipa")
include_symbols(true)
include_bitcode(false)

يتوافق معامل export_method في Gymfile مع أنواع الملفات الشخصية من Apple Developer Portal. لإصدارات App Store يُستخدم :app-store، وللاختبار :development أو :ad-hoc. يحدد معامل configuration تكوين البناء: Release للإصدارات أو Debug لإصدارات التصحيح.

يتحكم معامل include_bitcode في تضمين bitcode في IPA. كانت Apple تتطلب bitcode لتطبيقات watchOS وtvOS، ولكن لنظام iOS يمكن تعطيل هذا المعامل لتقليل حجم الملف الثنائي. include_symbols يضم ملفات تصحيح الرموز .dSYM، اللازمة لترميز سجلات الأعطال من App Store Connect أو خدمات المراقبة التابعة لجهات خارجية.

تتضمن المعاملات الإضافية لـ Gymfile export_options_plist لملف plist تصدير مخصص، وsilent لكتم الإخراج الزائد في السجلات، وbuild_path لتحديد دليل بناء مؤقت. هذه المعاملات مفيدة عند دمج Gym في خطوط أنابيب CI/CD معقدة بمتطلبات خاصة للقطع الأثرية.

أوامر Gym لبناء التطبيقات

واجهة الأوامر في Gym تتضمن معاملات أساسية لسيناريوهات البناء النموذجية وعلامات موسعة للضبط الدقيق للسلوك. يمكن تمرير معظم المعاملات عبر سطر الأوامر وعبر Gymfile، مع أولوية وسائط سطر الأوامر على ملف التكوين.

يستخدم الأمر fastlane gym بدون معاملات الإعدادات من Gymfile أو يكتشف تلقائياً المشروع في الدليل الحالي. للمشاريع ذات الأهداف المتعددة، يجب تحديد --scheme و--workspace لاختيار تكوين بناء الهدف الصحيح.

أوامر البناء النموذجية

للبناء التصحيح السريع يُستخدم fastlane gym --export_method development — فهو يبني IPA بملف تعريف Development للتثبيت على أجهزة المطورين. بناء IPA لـ App Store يتطلب العلم --export_method app-store وشهادة Distribution، والتي يجب تكوينها مسبقاً في Match أو Keychain.

bash
# بناء لـ App Store باسم مخصص
fastlane gym --export_method app-store --output_name "Release_1.0.ipa"

# بناء مع التنظيف قبل الأرشفة
fastlane gym --clean --configuration Debug

# بناء للمحاكي بدون IPA
fastlane gym --skip_package_ipa --destination "generic/platform=iOS Simulator"

يقوم العلم --clean بإزالة الملفات المؤقتة من البناء السابق قبل البدء، مما يمنع استخدام الذاكرة المؤقتة القديمة ويضمن بناءً نظيفاً. يسمح العلم --destination بتحديد المنصة المستهدفة: iOS Simulator أو iOS Device أو macOS Catalyst.

معامل Gymالغرضقيمة مثال
--schemeاختيار مخطط Xcode للبناءMyApp
--export_methodطريقة تصدير الملف الشخصيapp-store, ad-hoc
--configurationتكوين البناءRelease, Debug
--cleanتنظيف قبل البناءعلم
--output_nameاسم ملف IPA الناتجApp_1.0.ipa

دمج Gym في خط أنابيب CI/CD

دمج Gym مع CI/CD هو ممارسة قياسية لفرق تطوير iOS التي تسعى إلى التسليم المستمر. يتم تشغيل Gym في خطوط أنابيب GitHub Actions أو GitLab CI أو Bitrise أو Jenkins بعد مرحلة الاختبار وقبل الإرسال إلى TestFlight أو App Store.

يتضمن خط أنابيب iOS CI/CD النموذجي: استنساخ المستودع، تثبيت التبعيات عبر CocoaPods أو SPM، إعداد الشهادات عبر Match، بناء IPA عبر Gym والرفع عبر Pilot أو Deliver. GitLab CI هو نظام تكامل مستمر من GitLab يتيح تشغيل البنيات مع كل push إلى المستودع.

bash
# مثال على خطوة بناء في GitLab CI
fastlane gym --scheme "MyApp" \
      --export_method app-store \
      --output_directory "$CI_PROJECT_DIR/build"
      
# حفظ IPA كقطعة أثرية للبناء
cp "build/MyApp.ipa" "$CI_PROJECT_DIR/artifacts/"

لكي يعمل Gym بشكل صحيح في CI، يجب أن يكون لدى xcodebuild إمكانية الوصول إلى Keychain مع الشهادات. يتم ذلك عبر الأمر security unlock-keychain قبل تشغيل Gym. إذا تم استخدام Match، يتم تثبيت الشهادات تلقائياً ولا يلزم إعداد Keychain منفصل — يقوم Match بإنشاء سلسلة مفاتيح مؤقتة للبناء.

بعد بناء IPA بنجاح، يمكن نقله إلى الخطوات التالية في خط الأنابيب: الرفع إلى TestFlight عبر Pilot أو الإرسال إلى App Store Connect عبر Deliver. قم بتكوين متغيرات البيئة لنظام CI لتخزين بيانات اعتماد Apple Developer، بما في ذلك FASTLANE_APPLE_API_KEY وMATCH_PASSWORD، بحيث تعمل جميع مراحل خط الأنابيب دون إدخال تفاعلي.

أخطاء البناء الشائعة في Gym

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

الخطأ "error: No matching provisioning profiles found" يشير إلى عدم وجود Provisioning Profile مناسب لطريقة التصدير المختارة. الحل: تأكد من أن Match أو Keychain يحتوي على ملف شخصي صالح لـ export_method المحدد. Provisioning Profile يجب أن يتطابق مع معرف التطبيق ونوع الشهادة (Development أو Distribution) لتوقيع IPA بنجاح.

الخطأ "error: Signing for requires a development team" يحدث عندما لا يحدد المشروع فريق تطوير. الحل: أضف DEVELOPMENT_TEAM إلى تكوين بناء المشروع أو حدد team_id في Gymfile عبر معامل export_team_id. هذا مهم بشكل خاص للمشاريع التي تعمل مع عدة حسابات Apple Developer.

بالنسبة للخطأ "error: Multiple commands produce..."، يحدث تعارض في ملفات الإخراج بين الأهداف المختلفة في workspace. الحل: قم بتعيين مسارات إخراج فريدة لكل هدف في Build Settings لمشروع Xcode أو استخدم نظام البناء الجديد، والذي يتم تمكينه افتراضياً في Xcode 14 والإصدارات الأحدث. يدعم Gym كلا الخيارين عبر العلم --use_legacy_build_system.

الأسئلة الشائعة

كيف يختلف Gym عن البناء العادي عبر Xcode؟

يقوم Gym بأتمتة عملية xcodebuild ويزيل الخطوات اليدوية Archive وExport. على عكس Xcode، يضمن Gym معاملات بناء متطابقة على جميع الأجهزة، ويولد سجلات مفصلة ويتكامل مع خطوط أنابيب CI/CD دون الحاجة لفتح واجهة رسومية.

ما هي طرق التصدير التي يدعمها Gym؟

يدعم Gym أربع طرق: development للتصحيح، وapp-store للنشر، وad-hoc للاختبار التجريبي على عدد محدود من الأجهزة، وenterprise للتوزيع المؤسسي الداخلي. يتم تعيين الطريقة عبر المعامل --export_method أو export_method في Gymfile.

كيف يمكن تقليل حجم IPA عند البناء باستخدام Gym؟

لتقليل حجم IPA، استخدم --export_options_plist مع معامل thinning لتوليد ملف ثنائي شامل، وقم بتعطيل bitcode عبر include_bitcode(false)، واضبط تجريد الرموز عبر --include_symbols false إذا لم تكن سجلات الأعطال مطلوبة.

لماذا يفشل Gym مع خطأ Code Signing في CI؟

عادةً ما تنتج أخطاء Code Signing في CI عن نقص الشهادات في Keychain. الحل: قم بتكوين Match للتثبيت التلقائي للشهادات أو أضف الأمر security unlock-keychain قبل تشغيل Gym. تأكد من تمرير متغير MATCH_PASSWORD إلى بيئة CI.

هل يمكن استخدام Gym لبناء تطبيقات macOS؟

نعم، Gym يدعم بناء تطبيقات macOS وtvOS وwatchOS، وليس iOS فقط. لنظام macOS، حدد المنصة عبر المعامل --platform macos أو قم بتكوين المخطط المقابل في Xcode. يختار Gym تلقائياً تنسيق الأرشيف الصحيح للمنصة المستهدفة.

الخلاصة

  • Gym هي أداة مساعدة من Fastlane للبناء التلقائي لتطبيقات iOS إلى IPA، تجرد علامات xcodebuild المعقدة خلف واجهة سطر أوامر موحدة.
  • تتكون عملية البناء من الأرشفة عبر xcodebuild archive والتصدير إلى صيغة IPA بطريقة التوقيع والملف الشخصي المحددين.
  • التكوين عبر ملف Gymfile يثبت جميع المعاملات في المستودع: المخطط وworkspace وطريقة التصدير والتكوين ومسارات الإخراج.
  • يدعم Gym أربع طرق تصدير: development وapp-store وad-hoc وenterprise — لسيناريوهات توزيع التطبيقات المختلفة.
  • التكامل مع CI/CD عبر GitHub Actions أو GitLab CI أو Bitrise يؤتمت بناء IPA بعد كل تغيير في الكود بالمستودع.
  • ترتبط أخطاء Gym الشائعة بنقص الشهادات أو طريقة التصدير غير الصحيحة أو تعارضات ملفات الإخراج في workspaces ذات الأهداف المتعددة.

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع

اقرأ أيضًا