Gym (Fastlane) — bu buyruq satri orqali iOS ilovalarini IPA formatida yaratish va imzolash vositasi. Xcode dan farqli o'laroq, u sxema va profilni qo'lda tanlashni talab qiladi, Gym esa ilovani eksport qilish va paketlash jarayonini to'liq avtomatlashtiradi. Fastlane (2026) rasmiy hujjatlariga ko'ra, Gym xcodebuild parametrlarini optimallashtirish va resurslarni parallel qayta ishlash hisobiga yaratish vaqtini 30% ga qisqartiradi.
Asosiy
Gym (Fastlane) — bu Fastlane ekotizimining komponenti bo'lib, bitta terminal buyrug'i orqali iOS ilovalarini IPA formatida yaratishni ta'minlaydi. U o'nlab bayroqlar bilan xcodebuildni chaqirishning murakkab jarayonini abstraktlashtiradi va dasturchiga oqilona standart qiymatlar bilan oddiy interfeysni taqdim etadi.
Xcode da IPA yaratish uchun loyihani ochish, sxemani tanlash, Archive va Export ni sozlash, tarqatish usulini ko'rsatish va tugashini kutish kerak. Yaratishni avtomatlashtirish Gym orqali qo'lda bajariladigan qadamlarni yo'q qiladi va har bir yaratish bir xil parametrlar bilan bajarilishini kafolatlaydi — bu CI/CD quvurining bashorat qilish imkoniyati uchun juda muhimdir.
SwiftLee (2024) ma'lumotlariga ko'ra, Gym dan foydalanadigan jamoalar Xcode Organizer orqali qo'lda eksport qilish bilan solishtirganda, reliz jarayonini sozlashga 40% kamroq vaqt sarflaydi. Gym shuningdek, har bir xcodebuild qadamini ko'rsatadigan batafsil yaratish jurnallarini yaratadi, bu muvaffaqiyatsiz qurilmalarni tuzatish va kompilyatsiya xatolarini tahlil qilishni soddalashtiradi.
Gym dan sinov yoki nashr qilish uchun muntazam IPA yaratishni talab qiladigan har qanday iOS loyihasida foydalaning — bu jamoadagi barcha mashinalarda bir xil yaratish konfiguratsiyasini kafolatlashning yagona usuli.
Gym orqali IPA yaratish uchta ketma-ket bosqichdan iborat: loyihani xcodebuild orqali arxivlash, arxivni ikkilik paketga eksport qilish va imzo bilan IPA formatiga paketlash. Gym loyiha turini (single target yoki workspace) avtomatik aniqlaydi va to'g'ri yaratish usulini tanlaydi.
Arxivlash bosqichida Gym loyihada ko'rsatilgan sxema va konfiguratsiya parametrlari bilan xcodebuild archive ni ishga tushiradi. .xcarchive arxivi muvaffaqiyatli yaratilgandan so'ng, Gym tanlangan eksport usuli bilan xcodebuild -exportArchive ni ishga tushiradi. IPA eksporti — bu .xcarchive arxivini barcha kerakli resurslar va imzolarni o'z ichiga olgan .ipa o'rnatish fayliga aylantirish jarayoni.
Eksport usuli IPA ni imzolash uchun ishlatiladigan Provisioning Profile turini aniqlaydi. Gym to'rtta usulni qo'llab-quvvatlaydi: development dasturchilar qurilmalarida tuzatish uchun, app-store App Store da nashr qilish uchun, ad-hoc cheklangan miqdordagi qurilmalarda beta-sinov uchun va enterprise korporativ tarqatish uchun.
Qo'shimcha parametrlar eksportni aniq sozlash uchun export_options_plist ni ko'rsatish, IPA hajmini kamaytirish uchun Swift overlay ni bostirish va bitkodni boshqarishni o'z ichiga oladi. Gym shuningdek, --skip_package_ipa bayrog'i orqali simulyator uchun yaratishni qo'llab-quvvatlaydi, bu to'liq eksportsiz kodni tezkor tekshirish uchun foydalidir.
# Gym orqali IPA asosiy qurish
fastlane gym --workspace "MyApp.xcworkspace" --scheme "MyApp"
# Eksport usulini ko'rsatgan holda qurish
fastlane gym --export_method app-store
# IPA eksportsiz faqat arxivni qurish
fastlane gym --skip_package_ipa
Gymfile — bu barcha yaratish parametrlarini tuzilgan Ruby formatida saqlaydigan Fastlane konfiguratsiya fayli. Buyruq satri orqali bayroqlarni uzatishdan farqli o'laroq, Gymfile konfiguratsiyani repozitoriyada mahkamlash imkonini beradi va barcha dasturchilar va CI bir xil yaratish sozlamalaridan foydalanishini kafolatlaydi.
# Gymfile — qurish konfiguratsiyasi
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 dagi export_method parametri Apple Developer Portalidagi profil turlariga mos keladi. App Store relizlari uchun :app-store, sinov uchun — :development yoki :ad-hoc ishlatiladi. configuration parametri yaratish konfiguratsiyasini aniqlaydi: relizlar uchun Release yoki tuzatish versiyalari uchun Debug.
include_bitcode parametri IPA ga bitkodni kiritishni boshqaradi. Apple watchOS va tvOS ilovalari uchun bitkodni talab qilgan, ammo iOS uchun bu parametr ikkilik fayl hajmini kamaytirish uchun o'chirilishi mumkin. include_symbols App Store Connect yoki uchinchi tomon monitoring xizmatlaridan crash jurnallarini ramzlash uchun zarur bo'lgan .dSYM ramzli tuzatish fayllarini o'z ichiga oladi.
Gymfile ning qo'shimcha parametrlari maxsus eksport plist fayli uchun export_options_plist, jurnallarda ortiqcha chiqishni bostirish uchun silent va vaqtinchalik yaratish katalogini ko'rsatish uchun build_path ni o'z ichiga oladi. Ushbu parametrlar artefaktlarga maxsus talablar bilan murakkab CI/CD quvurlariga Gymni integratsiya qilishda foydalidir.
Buyruqlar interfeysi Gym odatiy yaratish stsenariylari uchun asosiy parametrlarni va xatti-harakatni aniq sozlash uchun kengaytirilgan bayroqlarni o'z ichiga oladi. Ko'pgina parametrlar buyruq satri orqali ham, Gymfile orqali ham uzatilishi mumkin, buyruq satri argumentlari konfiguratsiya faylidan ustun turadi.
fastlane gym buyrug'i parametrlarsiz Gymfile sozlamalaridan foydalanadi yoki joriy katalogdagi loyihani avtomatik aniqlaydi. Bir nechta targetlarga ega loyihalar uchun maqsadli yaratish konfiguratsiyasini to'g'ri tanlash uchun --scheme va --workspace ni ko'rsatish kerak.
Tezkor tuzatish yaratish uchun fastlane gym --export_method development ishlatiladi — u Development profili bilan IPA ni dasturchilar qurilmalariga o'rnatish uchun yaratadi. IPA yaratish App Store uchun --export_method app-store bayrog'ini va oldindan Match yoki Keychain da sozlangan Distribution sertifikatidan foydalanishni talab qiladi.
# App Store uchun custom nom bilan qurish
fastlane gym --export_method app-store --output_name "Release_1.0.ipa"
# Arxivlashdan oldin tozalash bilan qurish
fastlane gym --clean --configuration Debug
# IPA siz simulator uchun qurish
fastlane gym --skip_package_ipa --destination "generic/platform=iOS Simulator"
--clean bayrog'i ishga tushirishdan oldin oldingi yaratishning vaqtinchalik fayllarini o'chiradi, bu eskirgan keshdan foydalanishni oldini oladi va toza yaratishni kafolatlaydi. --destination bayrog'i yaratish uchun maqsadli platformani ko'rsatish imkonini beradi: iOS Simulator, iOS Device yoki macOS Catalyst.
| Gym parametri | Vazifasi | Qiymat namunasi |
|---|---|---|
| --scheme | Yaratish uchun Xcode sxemasini tanlash | MyApp |
| --export_method | Profilni eksport qilish usuli | app-store, ad-hoc |
| --configuration | Yaratish konfiguratsiyasi | Release, Debug |
| --clean | Yaratishdan oldin tozalash | bayroq |
| --output_name | Chiqish IPA faylining nomi | App_1.0.ipa |
Gymni CI/CD bilan integratsiya qilish uzluksiz yetkazib berishga intilayotgan iOS dasturchilar jamoalari uchun standart amaliyotdir. Gym GitHub Actions, GitLab CI, Bitrise yoki Jenkins quvurlarida sinov bosqichidan so'ng va TestFlight yoki App Store ga yuborishdan oldin ishga tushiriladi.
Odatiy iOS CI/CD quvuri quyidagilarni o'z ichiga oladi: repozitoriyani klonlash, CocoaPods yoki SPM orqali bog'liqliklarni o'rnatish, Match orqali sertifikatlarni sozlash, Gym orqali IPA yaratish va Pilot yoki Deliver orqali yuklash. GitLab CI — bu GitLab dan uzluksiz integratsiya tizimi bo'lib, repozitoriyaga har bir pushda yaratishni boshlash imkonini beradi.
# GitLab CI da qurish bosqichi misoli
fastlane gym --scheme "MyApp" \
--export_method app-store \
--output_directory "$CI_PROJECT_DIR/build"
# IPA ni qurish artefakti sifatida saqlash
cp "build/MyApp.ipa" "$CI_PROJECT_DIR/artifacts/"
Gymning CI da to'g'ri ishlashi uchun xcodebuild ga sertifikatlar bilan Keychain ga kirishni sozlash kerak. Bu Gymni ishga tushirishdan oldin security unlock-keychain buyrug'i orqali amalga oshiriladi. Agar Match ishlatilsa, sertifikatlar avtomatik o'rnatiladi va alohida Keychain sozlash talab qilinmaydi — Match o'zi yaratish uchun vaqtinchalik kalitlar to'plamini yaratadi.
Muvaffaqiyatli yaratishdan so'ng IPA quvurning keyingi bosqichlariga uzatilishi mumkin: Pilot orqali TestFlight ga yuklash yoki Deliver orqali App Store Connect ga yuborish. Apple Developer hisob ma'lumotlarini saqlash uchun CI tizimining atrof-muhit o'zgaruvchilari ni, jumladan FASTLANE_APPLE_API_KEY va MATCH_PASSWORD ni sozlang, shunda quvurning barcha bosqichlari interaktiv kiritishsiz ishlaydi.
Gym dan foydalanishda dasturchilar ko'pincha xcodebuild noto'g'ri konfiguratsiyasi, sertifikatlarning yo'qligi yoki Xcode versiyalarining mos kelmasligi bilan bog'liq xatolarga duch kelishadi. Xatolarni diagnostika qilish Gym har bir buyruq tugagandan so'ng konsolda ko'rsatiladigan to'liq yaratish jurnalini tahlil qilishdan boshlanadi.
«error: No matching provisioning profiles found» xatosi tanlangan eksport usuli uchun mos Provisioning Profile yo'qligini ko'rsatadi. Yechim: Match yoki Keychain belgilangan export_method uchun to'g'ri profilni o'z ichiga olganligiga ishonch hosil qiling. Provisioning Profile IPA ni muvaffaqiyatli imzolash uchun ilova identifikatoriga va sertifikat turiga (Development yoki Distribution) mos kelishi kerak.
«error: Signing for requires a development team» xatosi loyihada ishlab chiqish jamoasi ko'rsatilmaganda yuzaga keladi. Yechim: loyihaning yaratish konfiguratsiyasiga DEVELOPMENT_TEAM ni qo'shing yoki Gymfile da export_team_id parametri orqali team_id ni ko'rsating. Bu bir nechta Apple Developer akkauntlari bilan ishlaydigan loyihalar uchun ayniqsa muhimdir.
«error: Multiple commands produce...» xatosi workspace dagi turli targetlar o'rtasida chiqish fayllari ziddiyati sodir bo'lganda yuzaga keladi. Yechim: Xcode loyihasining Build Settings da har bir target uchun noyob chiqish yo'llarini sozlang yoki Xcode 14 va undan yangi versiyalarida standart yoqilgan yangi qurilish tizimidan foydalaning. Gym ikkala variantni --use_legacy_build_system bayrog'i orqali qo'llab-quvvatlaydi.
Tez-tez beriladigan savollar
Gym xcodebuild jarayonini avtomatlashtiradi va Archive va Export qo'lda bajariladigan qadamlarini yo'q qiladi. Xcode dan farqli o'laroq, Gym barcha mashinalarda bir xil yaratish parametrlarini kafolatlaydi, batafsil jurnallarni yaratadi va grafik interfeysni ochish zaruratisiz CI/CD quvurlariga integratsiyalanadi.
Gym to'rtta usulni qo'llab-quvvatlaydi: development tuzatish uchun, app-store nashr qilish uchun, ad-hoc cheklangan miqdordagi qurilmalarda beta-sinov uchun va enterprise In-House korporativ tarqatish uchun. Usul --export_method parametri yoki Gymfile dagi export_method orqali o'rnatiladi.
IPA hajmini kamaytirish uchun universal ikkilik fayl yaratish uchun --export_options_plist ni thinning parametri bilan ishlating, include_bitcode(false) orqali bitkodni o'chiring va agar crash jurnallari kerak bo'lmasa, --include_symbols false parametri orqali ramzlarni stripping qilishni sozlang.
CI dagi Code Signing xatosi odatda Keychain da sertifikatlar yo'qligi sababli yuzaga keladi. Yechim: Match ni sertifikatlarni avtomatik o'rnatish uchun sozlang yoki Gymni ishga tushirishdan oldin security unlock-keychain buyrug'ini qo'shing. MATCH_PASSWORD o'zgaruvchisi CI muhitiga uzatilganligiga ishonch hosil qiling.
Ha, Gym faqat iOS emas, balki macOS, tvOS va watchOS ilovalarini yaratishni ham qo'llab-quvvatlaydi. macOS uchun --platform macos parametri orqali platformani ko'rsating yoki Xcode da tegishli sxemani sozlang. Gym maqsadli platforma uchun avtomatik ravishda to'g'ri arxiv formatini tanlaydi.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.