Gym (Fastlane) एक टूल है जो कमांड लाइन के माध्यम से iOS ऐप्लिकेशन को IPA फ़ॉर्मेट में बिल्ड और साइन करता है। Xcode के विपरीत, जिसमें मैन्युअल रूप से स्कीम और प्रोफ़ाइल चुननी होती है, Gym पूरे एक्सपोर्ट और पैकेजिंग प्रक्रिया को ऑटोमेट करता है। आधिकारिक Fastlane दस्तावेज़ीकरण (2026) के अनुसार, Gym xcodebuild पैरामीटर्स के ऑप्टिमाइज़ेशन और समानांतर संसाधन प्रोसेसिंग के कारण बिल्ड समय को 30% तक कम करता है।
मुख्य बातें
Gym (Fastlane) Fastlane इकोसिस्टम का एक घटक है जो एक टर्मिनल कमांड से iOS ऐप्लिकेशन को IPA फ़ॉर्मेट में बिल्ड करता है। यह दर्जनों फ़्लैग्स के साथ xcodebuild को कॉल करने की जटिल प्रक्रिया को एब्सट्रैक्ट करता है और डेवलपर को उचित डिफ़ॉल्ट मानों के साथ एक सरल इंटरफ़ेस प्रदान करता है।
Xcode में, IPA बनाने के लिए प्रोजेक्ट खोलना, स्कीम चुनना, Archive और Export कॉन्फ़िगर करना, वितरण विधि निर्दिष्ट करना और पूरा होने की प्रतीक्षा करना आवश्यक है। बिल्ड ऑटोमेशन Gym के माध्यम से मैन्युअल चरणों को समाप्त करता है और सुनिश्चित करता है कि प्रत्येक बिल्ड समान पैरामीटर्स के साथ चले — जो पूर्वानुमानित CI/CD पाइपलाइनों के लिए महत्वपूर्ण है।
SwiftLee (2024) के अनुसार, Gym का उपयोग करने वाली टीमें Xcode Organizer के माध्यम से मैन्युअल एक्सपोर्ट की तुलना में रिलीज़ प्रक्रिया कॉन्फ़िगर करने में 40% कम समय बिताती हैं। Gym प्रत्येक xcodebuild चरण के साथ विस्तृत बिल्ड लॉग भी उत्पन्न करता है, जो विफल बिल्ड की डिबगिंग और संकलन त्रुटि विश्लेषण को सरल बनाता है।
किसी भी iOS प्रोजेक्ट में Gym का उपयोग करें जिसे परीक्षण या प्रकाशन के लिए नियमित IPA बिल्ड की आवश्यकता है — यह टीम की सभी मशीनों पर समान बिल्ड कॉन्फ़िगरेशन सुनिश्चित करने का एकमात्र तरीका है।
Gym के माध्यम से IPA बिल्ड तीन अनुक्रमिक चरणों से बना है: xcodebuild के माध्यम से प्रोजेक्ट आर्काइविंग, आर्काइव को बाइनरी पैकेज में एक्सपोर्ट करना, और साइनिंग के साथ IPA फ़ॉर्मेट में पैकेजिंग। Gym स्वचालित रूप से प्रोजेक्ट प्रकार (एकल target या workspace) का पता लगाता है और सही बिल्ड विधि चुनता है।
आर्काइविंग चरण में, Gym प्रोजेक्ट में निर्दिष्ट स्कीम और कॉन्फ़िगरेशन पैरामीटर्स के साथ xcodebuild archive चलाता है। सफल आर्काइव निर्माण (.xcarchive) के बाद, Gym चयनित एक्सपोर्ट विधि के साथ xcodebuild -exportArchive चलाता है। IPA एक्सपोर्ट .xcarchive को सभी आवश्यक संसाधनों और हस्ताक्षरों सहित एक इंस्टॉलेबल .ipa फ़ाइल में परिवर्तित करने की प्रक्रिया है।
एक्सपोर्ट विधि IPA साइनिंग के लिए उपयोग किए जाने वाले Provisioning Profile के प्रकार को निर्धारित करती है। Gym चार विधियों का समर्थन करता है: development डेवलपर उपकरणों पर डिबगिंग के लिए, app-store App Store प्रकाशन के लिए, ad-hoc सीमित उपकरणों पर बीटा परीक्षण के लिए, और enterprise कॉर्पोरेट वितरण के लिए।
अतिरिक्त पैरामीटर्स में सटीक एक्सपोर्ट कॉन्फ़िगरेशन के लिए export_options_plist निर्दिष्ट करना, IPA आकार कम करने के लिए Swift overlay को दबाना, और bitcode प्रबंधन शामिल है। Gym --skip_package_ipa फ़्लैग के माध्यम से सिम्युलेटर बिल्ड का भी समर्थन करता है, जो पूर्ण एक्सपोर्ट के बिना त्वरित कोड सत्यापन के लिए उपयोगी है।
# Gym के माध्यम से मूल IPA बिल्ड
fastlane gym --workspace "MyApp.xcworkspace" --scheme "MyApp"
# निर्यात विधि निर्दिष्ट करके बिल्ड
fastlane gym --export_method app-store
# केवल IPA निर्यात के बिना संग्रह बिल्ड
fastlane gym --skip_package_ipa
Gymfile एक Fastlane कॉन्फ़िगरेशन फ़ाइल है जो सभी बिल्ड पैरामीटर्स को संरचित Ruby फ़ॉर्मेट में संग्रहीत करती है। कमांड लाइन के माध्यम से फ़्लैग पास करने के विपरीत, Gymfile कॉन्फ़िगरेशन को रिपॉज़िटरी में कमिट करने और सभी डेवलपर्स और CI को समान बिल्ड सेटिंग्स का उपयोग सुनिश्चित करने की अनुमति देता है।
# 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)
Gymfile में export_method पैरामीटर Apple Developer Portal के प्रोफ़ाइल प्रकारों से मेल खाता है। App Store रिलीज़ के लिए :app-store, परीक्षण के लिए :development या :ad-hoc का उपयोग करें। configuration पैरामीटर बिल्ड कॉन्फ़िगरेशन निर्धारित करता है: रिलीज़ के लिए Release या डिबग बिल्ड के लिए Debug।
include_bitcode पैरामीटर IPA में bitcode शामिल करने को नियंत्रित करता है। Apple को watchOS और tvOS ऐप्लिकेशन के लिए bitcode की आवश्यकता थी, लेकिन iOS के लिए बाइनरी आकार कम करने के लिए इस पैरामीटर को अक्षम किया जा सकता है। include_symbols .dSYM सिंबल डिबग फ़ाइलों को शामिल करता है, जो App Store Connect या तृतीय-पक्ष मॉनिटरिंग सेवाओं से क्रैश लॉग सिंबलिकेशन के लिए आवश्यक हैं।
अतिरिक्त Gymfile पैरामीटर्स में कस्टम plist एक्सपोर्ट फ़ाइल के लिए export_options_plist, अत्यधिक लॉग आउटपुट को दबाने के लिए silent, और अस्थायी बिल्ड निर्देशिका निर्दिष्ट करने के लिए build_path शामिल है। ये पैरामीटर विशिष्ट आर्टिफ़ैक्ट आवश्यकताओं वाले जटिल CI/CD पाइपलाइनों में Gym को एकीकृत करते समय उपयोगी होते हैं।
कमांड इंटरफ़ेस Gym में सामान्य बिल्ड परिदृश्यों के लिए बुनियादी पैरामीटर और सटीक व्यवहार समायोजन के लिए विस्तारित फ़्लैग शामिल हैं। अधिकांश पैरामीटर कमांड लाइन और Gymfile दोनों के माध्यम से पास किए जा सकते हैं, जिसमें कमांड-लाइन तर्क कॉन्फ़िगरेशन फ़ाइल पर प्राथमिकता रखते हैं।
बिना पैरामीटर के fastlane gym कमांड Gymfile से सेटिंग्स का उपयोग करता है या वर्तमान निर्देशिका में प्रोजेक्ट का स्वचालित रूप से पता लगाता है। एकाधिक target वाले प्रोजेक्ट के लिए, सही target बिल्ड कॉन्फ़िगरेशन चयन के लिए --scheme और --workspace निर्दिष्ट करें।
त्वरित डिबग बिल्ड के लिए fastlane gym --export_method development का उपयोग करें — यह डेवलपर उपकरणों पर इंस्टॉलेशन के लिए Development प्रोफ़ाइल के साथ IPA बनाता है। App Store के लिए IPA बिल्ड में --export_method app-store फ़्लैग और Distribution प्रमाणपत्र की आवश्यकता होती है, जिसे Match या Keychain में पहले से कॉन्फ़िगर किया जाना चाहिए।
# कस्टम नाम के साथ 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 इंटीग्रेशन निरंतर डिलीवरी की ओर बढ़ने वाली iOS डेवलपमेंट टीमों के लिए मानक अभ्यास है। Gym परीक्षण चरण के बाद और TestFlight या App Store में सबमिशन से पहले GitHub Actions, GitLab CI, Bitrise या Jenkins पाइपलाइनों में चलता है।
एक सामान्य iOS CI/CD पाइपलाइन में शामिल है: रिपॉज़िटरी क्लोनिंग, CocoaPods या SPM के माध्यम से निर्भरता स्थापना, Match के माध्यम से प्रमाणपत्र सेटअप, Gym के माध्यम से IPA बिल्ड, और Pilot या Deliver के माध्यम से अपलोड। GitLab CI GitLab से एक सतत एकीकरण प्रणाली है जो रिपॉज़िटरी में प्रत्येक पुश पर बिल्ड चलाती है।
# 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/"
CI में Gym के सही ढंग से काम करने के लिए, xcodebuild को प्रमाणपत्रों के साथ Keychain तक पहुँच की आवश्यकता होती है। यह Gym चलाने से पहले security unlock-keychain कमांड के माध्यम से किया जाता है। यदि Match का उपयोग किया जाता है, तो प्रमाणपत्र स्वचालित रूप से इंस्टॉल हो जाते हैं और अलग Keychain सेटअप की आवश्यकता नहीं होती है — Match बिल्ड के लिए एक अस्थायी कुंजी श्रृंखला बनाता है।
सफल IPA बिल्ड के बाद, इसे बाद के पाइपलाइन चरणों में भेजा जा सकता है: Pilot के माध्यम से TestFlight में अपलोड करना या Deliver के माध्यम से App Store Connect पर भेजना। CI सिस्टम पर्यावरण चर को Apple Developer क्रेडेंशियल्स संग्रहीत करने के लिए कॉन्फ़िगर करें, जिसमें FASTLANE_APPLE_API_KEY और MATCH_PASSWORD शामिल हैं, ताकि सभी पाइपलाइन चरण बिना इंटरैक्टिव इनपुट के काम करें।
Gym का उपयोग करते समय, डेवलपर्स को अक्सर गलत xcodebuild कॉन्फ़िगरेशन, लापता प्रमाणपत्र, या Xcode संस्करण असंगतता से संबंधित त्रुटियों का सामना करना पड़ता है। त्रुटि निदान Gym में पूर्ण बिल्ड लॉग के विश्लेषण से शुरू होता है, जो प्रत्येक कमांड के पूरा होने के बाद कंसोल पर आउटपुट होता है।
त्रुटि "error: No matching provisioning profiles found" चयनित एक्सपोर्ट विधि के लिए कोई उपयुक्त Provisioning Profile नहीं होने का संकेत देती है। समाधान: सुनिश्चित करें कि Match या Keychain में निर्दिष्ट export_method के लिए एक वैध प्रोफ़ाइल है। Provisioning Profile को सफल IPA साइनिंग के लिए एप्लिकेशन पहचानकर्ता और प्रमाणपत्र प्रकार (Development या Distribution) से मेल खाना चाहिए।
त्रुटि "error: Signing for requires a development team" तब होती है जब प्रोजेक्ट में कोई डेवलपमेंट टीम निर्दिष्ट नहीं होती है। समाधान: प्रोजेक्ट बिल्ड कॉन्फ़िगरेशन में DEVELOPMENT_TEAM जोड़ें या export_team_id पैरामीटर के माध्यम से Gymfile में team_id निर्दिष्ट करें। यह विशेष रूप से एकाधिक Apple Developer खातों के साथ काम करने वाले प्रोजेक्ट के लिए प्रासंगिक है।
त्रुटि "error: Multiple commands produce..." के लिए, workspace में विभिन्न target के बीच आउटपुट फ़ाइलों का विरोध होता है। समाधान: Xcode प्रोजेक्ट Build Settings में प्रत्येक target के लिए अद्वितीय आउटपुट पथ सेट करें या नई बिल्ड प्रणाली का उपयोग करें, जो Xcode 14 और नए में डिफ़ॉल्ट रूप से सक्षम है। Gym --use_legacy_build_system फ़्लैग के माध्यम से दोनों विकल्पों का समर्थन करता है।
अक्सर पूछे जाने वाले प्रश्न
Gym xcodebuild प्रक्रिया को ऑटोमेट करता है और मैन्युअल Archive और Export चरणों को समाप्त करता है। Xcode के विपरीत, Gym सभी मशीनों पर समान बिल्ड पैरामीटर सुनिश्चित करता है, विस्तृत लॉग उत्पन्न करता है और ग्राफ़िकल इंटरफ़ेस खोलने की आवश्यकता के बिना CI/CD पाइपलाइनों में एकीकृत होता है।
Gym चार विधियों का समर्थन करता है: development डिबगिंग के लिए, app-store प्रकाशन के लिए, ad-hoc सीमित उपकरणों पर बीटा परीक्षण के लिए, और enterprise कॉर्पोरेट In-House वितरण के लिए। विधि --export_method पैरामीटर या Gymfile में export_method के माध्यम से सेट की जाती है।
IPA आकार कम करने के लिए, यूनिवर्सल बाइनरी जनरेशन के लिए thinning पैरामीटर के साथ --export_options_plist का उपयोग करें, include_bitcode(false) के माध्यम से bitcode अक्षम करें, और --include_symbols false के माध्यम से सिंबल स्ट्रिपिंग कॉन्फ़िगर करें यदि क्रैश लॉग की आवश्यकता नहीं है।
CI में Code Signing त्रुटियाँ आमतौर पर Keychain में प्रमाणपत्रों की कमी के कारण होती हैं। समाधान: स्वचालित प्रमाणपत्र स्थापना के लिए Match कॉन्फ़िगर करें या Gym चलाने से पहले security unlock-keychain कमांड जोड़ें। सुनिश्चित करें कि MATCH_PASSWORD चर CI वातावरण में पास किया गया है।
हाँ, Gym केवल iOS ही नहीं, बल्कि macOS, tvOS और watchOS एप्लिकेशन बनाने का भी समर्थन करता है। macOS के लिए, --platform macos पैरामीटर के माध्यम से प्लेटफ़ॉर्म निर्दिष्ट करें या Xcode में संबंधित स्कीम कॉन्फ़िगर करें। Gym स्वचालित रूप से लक्ष्य प्लेटफ़ॉर्म के लिए सही आर्काइव फ़ॉर्मेट चुनता है।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें