Gym (Fastlane), iOS uygulamalarını komut satırı üzerinden IPA formatında derlemek ve imzalamak için bir araçtır. Şema ve profilin manuel seçimini gerektiren Xcode'un aksine Gym, uygulamanın dışa aktarım ve paketleme sürecinin tamamını otomatikleştirir. Fastlane'in resmi belgelerine (2026) göre, Gym, xcodebuild parametrelerini optimize ederek ve kaynakları paralel işleyerek derleme süresini %30 oranında azaltır.
Önemli Noktalar
Gym (Fastlane), tek bir terminal komutuyla iOS uygulamalarını IPA formatında derlemeyi sağlayan Fastlane ekosisteminin bir bileşenidir. Onlarca flag ile xcodebuild çağrısının karmaşık sürecini soyutlar ve geliştiriciye makul varsayılan değerlerle basit bir arayüz sunar.
Xcode'da IPA derlemek için projeyi açmak, şemayı seçmek, Archive ve Export'u yapılandırmak, dağıtım yöntemini belirtmek ve tamamlanmasını beklemek gerekir. Gym ile derleme otomasyonu manuel adımları ortadan kaldırır ve her derlemenin aynı parametrelerle yürütülmesini sağlar — bu CI/CD pipeline'ının öngörülebilirliği için kritiktir.
SwiftLee (2024)'ye göre, Gym kullanan ekipler, Xcode Organizer üzerinden manuel dışa aktarıma kıyasla sürüm süreci yapılandırmasında %40 daha az zaman harcar. Gym ayrıca xcodebuild'in her adımını gösteren ayrıntılı derleme logları oluşturur, bu da başarısız build'lerin hata ayıklamasını ve derleme hatalarının analizini kolaylaştırır.
Gym'i test veya yayınlama için düzenli IPA derlemesi gerektiren herhangi bir iOS projesinde kullanın — ekipteki tüm makinelerde aynı derleme yapılandırmasını garanti etmenin tek yolu budur.
Gym ile IPA derlemesi üç aşamalı ardışık adımdan oluşur: projenin xcodebuild ile arşivlenmesi, arşivin ikili pakete dönüştürülmesi ve imzalı IPA formatında paketlenmesi. Gym, proje türünü (tek target veya workspace) otomatik olarak belirler ve doğru derleme yöntemini seçer.
Arşivleme aşamasında Gym, projede belirtilen şema ve yapılandırma parametreleriyle xcodebuild archive'i çalıştırır. .xcarchive arşivinin başarıyla oluşturulmasının ardından Gym, seçilen dışa aktarım yöntemiyle xcodebuild -exportArchive'i çalıştırır. IPA dışa aktarımı, .xcarchive arşivini gerekli tüm kaynakları ve imzaları içeren .ipa kurulum dosyasına dönüştürme işlemidir.
Dışa aktarım yöntemi, IPA'yı imzalamak için kullanılacak Provisioning Profile türünü belirler. Gym dört yöntemi destekler: geliştirici cihazlarında hata ayıklama için development, App Store'da yayınlama için app-store, sınırlı sayıda cihazda beta testi için ad-hoc ve kurumsal dağıtım için enterprise.
Ek parametreler arasında dışa aktarımı hassas şekilde ayarlamak için export_options_plist belirtimi, IPA boyutunu küçültmek için Swift overlay'in kaldırılması ve bitcode yönetimi bulunur. Gym ayrıca tam dışa aktarım olmadan hızlı kod kontrolü için yararlı olan --skip_package_ipa flag'i ile simülatör için derlemeyi de destekler.
# Gym ile temel IPA derlemesi
fastlane gym --workspace "MyApp.xcworkspace" --scheme "MyApp"
# Dışa aktarma yöntemi belirtilerek derleme
fastlane gym --export_method app-store
# IPA dışa aktarmadan yalnızca arşiv derleme
fastlane gym --skip_package_ipa
Gymfile, tüm derleme parametrelerini yapılandırılmış Ruby formatında depolayan bir Fastlane yapılandırma dosyasıdır. Flag'leri komut satırı üzerinden iletmenin aksine Gymfile, yapılandırmayı depoda sabitlemeyi ve tüm geliştiriciler ile CI'nın aynı derleme parametrelerini kullanmasını sağlar.
# Gymfile — derleme yapılandırması
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'daki export_method parametresi, Apple Developer Portal'daki profil türlerine karşılık gelir. App Store sürümleri için :app-store, test için — :development veya :ad-hoc kullanılır. configuration parametresi derleme yapılandırmasını belirler: sürüm için Release veya hata ayıklama için Debug.
include_bitcode parametresi, IPA'ya bitcode dahil edilmesini kontrol eder. Apple watchOS ve tvOS uygulamaları için bitcode gerektiriyordu, ancak iOS için bu parametre ikili dosya boyutunu küçültmek için devre dışı bırakılabilir. include_symbols, App Store Connect veya üçüncü taraf izleme hizmetlerinden gelen crash loglarını sembolleştirmek için gerekli olan .dSYM hata ayıklama sembol dosyalarını içerir.
Gymfile'ın ek parametreleri arasında özel dışa aktarım plist dosyası için export_options_plist, loglardaki gereksiz çıktıyı bastırmak için silent ve geçici derleme dizinini belirtmek için build_path bulunur. Bu parametreler, özel yapıt gereksinimleri olan karmaşık CI/CD pipeline'larına Gym entegre edilirken kullanışlıdır.
Komut arabirimi Gym, tipik derleme senaryoları için temel parametreler ve davranışı hassas şekilde ayarlamak için gelişmiş flag'ler içerir. Parametrelerin çoğu hem komut satırı hem de Gymfile aracılığıyla iletilebilir; komut satırı argümanları yapılandırma dosyasına göre önceliklidir.
Parametresiz fastlane gym komutu, Gymfile ayarlarını kullanır veya geçerli dizindeki projeyi otomatik olarak algılar. Birden çok target'ı olan projeler için, hedef derleme yapılandırmasının doğru seçimi için --scheme ve --workspace belirtilmelidir.
Hızlı hata ayıklama derlemesi için fastlane gym --export_method development kullanılır — geliştirici cihazlarına kurulum için Development profiliyle IPA derler. App Store için IPA derlemesi, --export_method app-store flag'ini ve Match veya Keychain'de önceden yapılandırılması gereken bir Distribution sertifikasının kullanımını gerektirir.
# App Store için özel adla derleme
fastlane gym --export_method app-store --output_name "Release_1.0.ipa"
# Arşivlemeden önce temizleyerek derleme
fastlane gym --clean --configuration Debug
# Simülatör için IPA'sız derleme
fastlane gym --skip_package_ipa --destination "generic/platform=iOS Simulator"
--clean flag'i, çalıştırmadan önce önceki derlemenin geçici dosyalarını kaldırır, güncelliğini yitirmiş önbelleğin kullanılmasını önler ve temiz bir build sağlar. --destination flag'i, derleme için hedef platformu belirtmeye olanak tanır: iOS Simulator, iOS Device veya macOS Catalyst.
| Gym Parametresi | İşlev | Örnek Değer |
|---|---|---|
| --scheme | Derleme için Xcode şeması seçimi | MyApp |
| --export_method | Profil dışa aktarım yöntemi | app-store, ad-hoc |
| --configuration | Derleme yapılandırması | Release, Debug |
| --clean | Derleme öncesi temizlik | flag |
| --output_name | Çıktı IPA dosyası adı | App_1.0.ipa |
Gym'in CI/CD ile entegrasyonu, sürekli teslimat hedefleyen iOS geliştirme ekipleri için standart bir uygulamadır. Gym, test aşamasından sonra ve TestFlight veya App Store'a göndermeden önce GitHub Actions, GitLab CI, Bitrise veya Jenkins pipeline'larında çalıştırılır.
Tipik bir iOS CI/CD pipeline'ı şunları içerir: depoyu klonlama, CocoaPods veya SPM ile bağımlılıkları kurma, Match ile sertifikaları yapılandırma, Gym ile IPA derleme ve Pilot veya Deliver ile yükleme. GitLab CI, depoya her push'ta derlemeleri başlatmaya olanak tanıyan GitLab'dan sürekli entegrasyon sistemidir.
# GitLab CI'da derleme adımı örneği
fastlane gym --scheme "MyApp" \
--export_method app-store \
--output_directory "$CI_PROJECT_DIR/build"
# IPA'yı derleme artefaktı olarak kaydetme
cp "build/MyApp.ipa" "$CI_PROJECT_DIR/artifacts/"
Gym'in CI'da doğru çalışması için xcodebuild'in sertifikaları içeren Keychain'e erişimini yapılandırmak gerekir. Bu, Gym'i çalıştırmadan önce security unlock-keychain komutuyla yapılır. Match kullanılıyorsa, sertifikalar otomatik olarak kurulur ve ayrı bir Keychain yapılandırması gerekmez — Match derleme için kendisi geçici bir anahtarlık oluşturur.
Başarılı bir IPA derlemesinden sonra, pipeline'ın sonraki adımlarına aktarılabilir: Pilot aracılığıyla TestFlight'a yükleme veya Deliver aracılığıyla App Store Connect'e gönderme. Tüm pipeline adımlarının etkileşimli giriş olmadan çalışması için FASTLANE_APPLE_API_KEY ve MATCH_PASSWORD dahil Apple Developer kimlik bilgilerini depolamak üzere CI sisteminin ortam değişkenlerini yapılandırın.
Gym kullanırken geliştiriciler sıklıkla yanlış xcodebuild yapılandırması, sertifika eksikliği veya Xcode sürüm uyumsuzluğuyla ilgili hatalarla karşılaşır. Hata teşhisi Gym, her komuttan sonra konsola yazdırılan tam derleme logunun analiziyle başlar.
« error: No matching provisioning profiles found » hatası, seçilen dışa aktarım yöntemi için uygun Provisioning Profile olmadığını gösterir. Çözüm: Match veya Keychain'in belirtilen export_method için doğru profili içerdiğini doğrulayın. Provisioning Profile, başarılı bir IPA imzalaması için uygulama tanımlayıcısı ve sertifika türüyle (Development veya Distribution) eşleşmelidir.
« error: Signing for requires a development team » hatası, projede hiçbir geliştirme ekibi belirtilmediğinde ortaya çıkar. Çözüm: projenin derleme yapılandırmasına DEVELOPMENT_TEAM ekleyin veya Gymfile'da export_team_id parametresiyle team_id belirtin. Bu, özellikle birden çok Apple Developer hesabıyla çalışan projeler için önemlidir.
« error: Multiple commands produce... » hatası oluştuğunda, workspace'teki farklı target'lar arasında çıktı dosyası çakışması meydana gelir. Çözüm: Xcode projesinin Build Settings'inde her target için benzersiz çıktı yolları yapılandırın veya Xcode 14 ve sonrasında varsayılan olarak etkin olan yeni build sistemini kullanın. Gym her iki seçeneği de --use_legacy_build_system flag'i ile destekler.
Sıkça Sorulan Sorular
Gym xcodebuild sürecini otomatikleştirir ve manuel Archive ile Export adımlarını ortadan kaldırır. Xcode'un aksine Gym, tüm makinelerde aynı derleme parametrelerini garanti eder, ayrıntılı loglar oluşturur ve grafik arayüzü açmaya gerek kalmadan CI/CD pipeline'larına entegre olur.
Gym dört yöntemi destekler: hata ayıklama için development, yayınlama için app-store, sınırlı sayıda cihazda beta testi için ad-hoc ve kurumsal iç dağıtım In-House için enterprise. Yöntem, --export_method parametresi veya Gymfile'daki export_method ile ayarlanır.
IPA boyutunu küçültmek için evrensel ikili dosya oluşturmak üzere --export_options_plist'i thinning parametresiyle kullanın, include_bitcode(false) ile bitcode'u devre dışı bırakın ve crash logları gerekli değilse --include_symbols false parametresiyle sembol kırpma yapılandırın.
CI'daki Code Signing hatası genellikle Keychain'de sertifika eksikliğinden kaynaklanır. Çözüm: sertifikaların otomatik kurulumu için Match'i yapılandırın veya Gym'i çalıştırmadan önce security unlock-keychain komutunu ekleyin. MATCH_PASSWORD değişkeninin CI ortamına iletildiğinden emin olun.
Evet, Gym sadece iOS değil, macOS, tvOS ve watchOS uygulamalarının derlemesini de destekler. macOS için --platform macos parametresiyle platformu belirtin veya Xcode'da ilgili şemayı yapılandırın. Gym hedef platform için otomatik olarak doğru arşiv formatını seçecektir.
Özet
Anahtar teslim bir mobil uygulama geliştireceğiz
IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.
Ayrıca okuyun