Gym (Fastlane) — iOS tətbiqlərini komanda sətri vasitəsilə IPA formatında yığmaq və imzalamaq üçün bir alətdir. Sxem və profil seçimi tələb edən Xcode-dan fərqli olaraq, Gym ixrac və tətbiq paketləmə prosesini tam avtomatlaşdırır. Fastlane rəsmi sənədlərinə (2026) görə, Gym xcodebuild parametrlərinin optimallaşdırılması və resursların paralel işlənməsi sayəsində qurulum vaxtını 30% azaldır.
Başlıca
Gym (Fastlane) — iOS tətbiqlərini bir terminal əmri ilə IPA formatında yığmağı təmin edən Fastlane ekosisteminin komponentidir. O, onlarla flaqla xcodebuild-ə zəng etməyin mürəkkəb prosesini abstraksiya edir və proqramçıya ağlabatan defolt dəyərlərlə sadə interfeys təqdim edir.
Xcode-da IPA qurmaq üçün layihəni açmaq, sxem seçmək, Archive və Export-ı konfiqurasiya etmək, yayılma metodunu göstərmək və tamamlanmasını gözləmək lazımdır. Qurulumun avtomatlaşdırılması Gym vasitəsilə manual addımları aradan qaldırır və hər qurulumun eyni parametrlərlə yerinə yetirilməsini təmin edir — bu, CI/CD pipeline-nın proqnozlaşdırıla bilməsi üçün vacibdir.
SwiftLee (2024) məlumatlarına görə, Gym-dən istifadə edən komandalar, Xcode Organizer vasitəsilə manual ixracla müqayisədə, buraxılış prosesinin konfiqurasiyasına 40% daha az vaxt sərf edirlər. Gym həmçinin uğursuz build-lərin aradan qaldırılmasını asanlaşdıran və kompilyasiya səhvlərinin təhlilini sadələşdirən hər bir xcodebuild addımı ilə ətraflı qurulum jurnalları yaradır.
Gym-i test etmək və ya nəşr etmək üçün mütəzəm IPA qurulumu tələb edən istənilən iOS layihəsində istifadə edin — bu, komandadakı bütün maşınlarda eyni qurulum konfiqurasiyasına zəmanət verməyin yeganə yoludur.
Gym vasitəsilə IPA qurulumu üç ardıcıl mərhəlidən ibarətdir: xcodebuild vasitəsilə layihənin arxivləşdirilməsi, arxivin ikili paketə ixracı və imza ilə IPA formatında paketləmə. Gym avtomatik olaraq layihə növünü (tək target və ya workspace) müyyənləşdirir və düzgün qurulum metodunu seçir.
Arxivləşdirmə mərhələsində Gym layihədə göstərilən sxem və konfiqurasiya parametrləri ilə xcodebuild archive-i işə salır. .xcarchive arxivinin uğurla yaradılmasından sonra Gym seçilmiş ixrac metodu ilə xcodebuild -exportArchive-i işə salır. IPA ixracı — .xcarchive arxivinin bütün lazımi resurslar və imzalar daxil olmaqla .ipa quraşdırma faylına çevrilməsi prosesidir.
Ixrac metodu IPA-nın imzalanması üçün istifadə ediləcək Provisioning Profile növünü müyyənləşdirir. Gym dörd metodu dəstəkləyir: proqramçı cihazlarında debug üçün development, App Store-da nəşr üçün app-store, məhdud sayda cihazlarda beta testi üçün ad-hoc və korporativ yayılma üçün enterprise.
Əlavə parametrlərə ixracın dəqiq konfiqurasiyası üçün export_options_plist göstərilməsi, IPA ölçüsünü azaltmaq üçün Swift overlay-in söndürülməsi və bitcode idarə edilməsi daxildir. Gym həmçinin tam ixrac olmadan kodu tez yoxlamaq üçün faydalı olan --skip_package_ipa flaqı vasitəsilə simulyator üçün qurulumu dəstəkləyir.
# Gym vasitəsilə əsas IPA build-i
fastlane gym --workspace "MyApp.xcworkspace" --scheme "MyApp"
# İxrac metodunu göstərməklə build
fastlane gym --export_method app-store
# IPA ixracı olmadan yalnız arxivin build-i
fastlane gym --skip_package_ipa
Gymfile — bütün qurulum parametrlərini strukturlu Ruby formatında saxlayan Fastlane konfiqurasiya faylıdır. Flaqları komanda sətri vasitəsilə ötürməkdən fərqli olaraq, Gymfile konfiqurasiyanı repo-zitoriyada təsbit etməyə və bütün proqramçıların və CI-nin eyni qurulum parametrlərindən istifadə etməsini təmin etməyə imkan verir.
# Gymfile — build konfiqurasiyası
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-də export_method parametri Apple Developer Portal-dakı profil növlərinə uyğundur. App Store buraxılışları üçün :app-store, test üçün :development və ya :ad-hoc istifadə olunur. configuration parametri qurulum konfiqurasiyasını müyyənləşdirir: buraxılışlar üçün Release və ya debug versiyaları üçün Debug.
include_bitcode parametri IPA-da bitcode daxil edilməsini idarə edir. Apple watchOS və tvOS tətbiqləri üçün bitcode tələb edirdi, lakin iOS üçün bu parametr ikili faylın ölçüsünü azaltmaq üçün söndürülə bilər. include_symbols App Store Connect və ya xarici monitorinq xidmətlərindən crash jurnallarını simvolizasiya etmək üçün lazım olan .dSYM simvolik debug fayllarını daxil edir.
Gymfile-ın əlavə parametrlərinə fərdi ixrac plist faylı üçün export_options_plist, jurnallarda artıq məlumatın qarşısını almaq üçün silent və müvəqqəti qurulum kataloqunu göstərmək üçün build_path daxildir. Bu parametrlər Gym-i artefaktlara xüsusi tələbləri olan mürəkkəb CI/CD pipeline-ları ilə inteqrasiya edərkən faydalıdır.
Əmr interfeysi Gym tipik qurulum ssenariləri üçün əsas parametrlər və davranışın dəqiq tənzimlənməsi üçün genişləndirilmiş flaq-lar ehtiva edir. Parametrlərin əksəriyyəti həm komanda sətri, həm də Gymfile vasitəsilə ötürülə bilər, komanda sətri arqumentləri konfiqurasiya faylından üstünlük təşkil edir.
fastlane gym əmri parametrsiz Gymfile-dən parametrləri istifadə edir və ya cari kataloqda layihəni avtomatik aşkar edir. Bir neçə targeti olan layihələr üçün hədəf qurulum konfiqurasiyasının düzgün seçilməsi üçün --scheme və --workspace göstərilməlidir.
Sürətli debug qurulumu üçün fastlane gym --export_method development istifadə olunur — bu, proqramçı cihazlarında quraşdırmaq üçün Development profili ilə IPA yığır. App Store üçün IPA qurulumu --export_method app-store flaqı və Match və ya Keychain-də əvvəlcədən konfiqurasiya edilməli Distribution sertifikatının istifadəsini tələb edir.
# App Store üçün custom adla build
fastlane gym --export_method app-store --output_name "Release_1.0.ipa"
# Arxivləşdirmədən əvvəl təmizləmə ilə build
fastlane gym --clean --configuration Debug
# IPA olmadan simulator üçün build
fastlane gym --skip_package_ipa --destination "generic/platform=iOS Simulator"
--clean flaqı işə salınmazdan əvvəl əvvəlki qurulumun müvəqqəti fayllarını silir, bu da köhnəlmiş keş istifadəsinin qarşısını alır və təmiz build-ə zəmanət verir. --destination flaqı qurulum üçün hədəf platformanı göstərməyə imkan verir: iOS Simulator, iOS Device və ya macOS Catalyst.
| Gym Parametri | Təyinat | Nümunə dəyər |
|---|---|---|
| --scheme | Qurulum üçün Xcode sxeminin seçilməsi | MyApp |
| --export_method | Profil ixrac metodu | app-store, ad-hoc |
| --configuration | Qurulum konfiqurasiyası | Release, Debug |
| --clean | Qurulumdan əvvəl təmizləmə | flaq |
| --output_name | Çıxış IPA faylının adı | App_1.0.ipa |
Gym-in CI/CD ilə inteqrasiyası — davamlı çatdırılmaya can atan iOS tətbiq komandaları üçün standart təcrübədir. Gym test mərhələsindən sonra və TestFlight və ya App Store-a göndərilməzdən əvvəl GitHub Actions, GitLab CI, Bitrise və ya Jenkins pipeline-larında işə salınır.
Tipik iOS CI/CD pipeline-ına daxildir: repo-zitoriyanın klonlanması, CocoaPods və ya SPM vasitəsilə asılılıqların quraşdırılması, Match vasitəsilə sertifikatların konfiqurasiyası, Gym vasitəsilə IPA qurulumu və Pilot və ya Deliver vasitəsilə yükləmə. GitLab CI — repo-zitoriyaya hər push-da qurulumları işə salmağa imkan verən GitLab-dan davamlı inteqrasiya sistemidir.
# GitLab CI-da build addımı nümunəsi
fastlane gym --scheme "MyApp" \
--export_method app-store \
--output_directory "$CI_PROJECT_DIR/build"
# IPA-nın build artefaktı kimi saxlanması
cp "build/MyApp.ipa" "$CI_PROJECT_DIR/artifacts/"
Gym-in CI-da düzgün işləməsi üçün sertifikatlarla Keychain-ə xcodebuild girişini konfiqurasiya etmək lazımdır. Bu, Gym-i işə salmazdan əvvəl security unlock-keychain əmri ilə həyata keçirilir. Match istifadə olunursa, sertifikatlar avtomatik quraşdırılır və Keychain-in ayrıca konfiqurasiyası tələb olunmur — Match özü qurulum üçün müvəqqəti açar qrupu yaradır.
Uğurlu IPA qurulumundan sonra fayl pipeline-nın növbəti addımlarına ötürülə bilər: Pilot vasitəsilə TestFlight-a yüklənmə və ya Deliver vasitəsilə App Store Connect-ə göndərilmə. Pipeline-ın bütün mərhələlərinin interaktiv daxiletmə olmadan işləməsi üçün FASTLANE_APPLE_API_KEY və MATCH_PASSWORD daxil olmaqla Apple Developer məlumatlarını saxlamaq üçün CI sisteminin ətraf mühit dəyişənlərini konfiqurasiya edin.
Gym-dən istifadə edərkən proqramçılar tez-tez xcodebuild-in səhv konfiqurasiyası, sertifikatların olmaması və ya Xcode versiyalarının uyğunsuzluğu ilə bağlı səhvlərlə qarşılaşırlar. Səhv diaqnostikası Gym hər əmrin tamamlanmasından sonra konsola çıxarılan tam qurulum jurnalının təhlili ilə başlayır.
„error: No matching provisioning profiles found” səhvi seçilmiş ixrac metodu üçün uyğun Provisioning Profile-in olmadığını göstərir. Həll yolu: Match və ya Keychain-in göstərilmiş export_method üçün düzgün profil ehtiva etdiyinə əmin olun. Provisioning Profile IPA-nın uğurlu imzalanması üçün tətbiq identifikatoruna və sertifikat növünə (Development və ya Distribution) uyğun olmalıdır.
„error: Signing for requires a development team” səhvi layihədə inkişaf komandası göstərilmədikdə baş verir. Həll yolu: layihə nin qurulum konfiqurasiyasına DEVELOPMENT_TEAM əlavə edin və ya Gymfile-də export_team_id parametri vasitəsilə team_id göstərin. Bu, xüsusilə bir neçə Apple Developer hesabı ilə işləyən layihələr üçün aktualdır.
„error: Multiple commands produce...” səhvində workspace-dəki müxtəlif targetlər arasında çıxış fayllarının konflikti baş verir. Həll yolu: Xcode layihəsinin Build Settings-də hər target üçün unikal çıxış yolları konfiqurasiya edin və ya Xcode 14 və daha yenisində defolt olaraq aktiv olan yeni qurulum sistemindən istifadə edin. Gym hər iki variantı --use_legacy_build_system flaqı vasitəsilə dəstəkləyir.
Tez-tez verilən suallar
Gym xcodebuild prosesini avtomatlaşdırır və manual Archive və Export addımlarını aradan qaldırır. Xcode-dan fərqli olaraq, Gym bütün maşınlarda eyni qurulum parametrlərinə zəmanət verir, ətraflı jurnallar yaradır və qrafik interfeysi açmaq zərurəti olmadan CI/CD pipeline-larına inteqrasiya olunur.
Gym dörd metodu dəstəkləyir: debug üçün development, nəşr üçün app-store, məhdud sayda cihazlarda beta testi üçün ad-hoc və In-House korporativ yayılma üçün enterprise. Metod --export_method parametri və ya Gymfile-də export_method vasitəsilə təyin edilir.
IPA ölçüsünü azaltmaq üçün universal ikili fayl yaratmaq üçün thinning parametri ilə --export_options_plist istifadə edin, include_bitcode(false) vasitəsilə bitcode-ni söndürün və crash jurnalları lazım deyilsə, --include_symbols false parametri ilə simvol stripping-i konfiqurasiya edin.
CI-da Code Signing xətası adətən Keychain-də sertifikatların olmaması səbəbindən yaranır. Həll yolu: sertifikatların avtomatik quraşdırılması üçün Match-ı konfiqurasiya edin və ya Gym-i işə salmazdan əvvəl security unlock-keychain əmrini əlavə edin. MATCH_PASSWORD dəyişənin CI mühitinə ötürüldüyünə əmin olun.
Bəli, Gym təkcə iOS deyil, həmçinin macOS, tvOS və watchOS tətbiqlərinin qurulumunu dəstəkləyir. macOS üçün --platform macos parametri vasitəsilə platformanı göstərin və ya Xcode-da müvafiq sxemi konfiqurasiya edin. Gym hədəf platforma üçün avtomatik olaraq düzgün arxiv formatını seçəcək.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun