Code Signing Nedir?
Apple, App Store'da veya cihazlarda çalıştırılan her uygulamanın dijital olarak imzalanmasını zorunlu kılar. Bu imza, uygulamanın güvenilir bir geliştiriciden geldiğini ve değiştirilmediğini doğrular. Code signing olmadan hiçbir uygulama iOS cihazlarda çalışamaz.
Temel Kavramlar
Certificate (Sertifika)
- Apple Developer hesabınızla ilişkilendirilmiş dijital kimlik
- Development: Test cihazlarında çalıştırma için
- Distribution: App Store'a gönderme için
- Keychain'de saklanır, private key + public key çifti içerir
- Süresi dolabilir (genellikle 1 yıl), yenilenmesi gerekir
Provisioning Profile
- Certificate + App ID + Device ID'leri birleştiren dosya
- Development: Belirli test cihazlarında çalıştırma
- Ad Hoc: Belirli cihazlara dağıtım (100 cihaz limiti)
- App Store: Store'a gönderim için
- Enterprise: Kurumsal uygulamalar için (299$/yıl hesap)
App ID
- Uygulamayı benzersiz olarak tanımlayan identifier
- Bundle ID formatında: com.sirketadi.uygulama
- Wildcard (*) veya explicit olabilir
- Explicit App ID push notification, IAP gibi özellikler için gerekli
Signing Süreci
- Certificate oluştur: Apple Developer Portal veya Xcode üzerinden
- App ID tanımla: Developer Portal'da benzersiz identifier belirle
- Provisioning Profile oluştur: Certificate + App ID + (Devices) birleştir
- Xcode'da ayarla: Signing & Capabilities bölümünde yapılandır
- Build ve arşivle: Xcode ile Archive al ve Export et
Automatic vs Manual Signing
Automatic (Önerilen)
- Xcode otomatik olarak certificate ve profile yönetir
- "Automatically manage signing" seçeneği işaretli
- Çoğu durum için yeterli ve pratik
- Team seçimi yeterli, geri kalanını Xcode halleder
Manual
- Kendin certificate ve profile seçersin
- CI/CD pipeline'ları için gerekli olabilir
- Daha fazla kontrol ama daha karmaşık
- Birden fazla target veya extension olduğunda tercih edilebilir
Fastlane Match
Team'lerde code signing yönetimi için en iyi çözüm:
- Certificates ve profiles'ı Git repo'da şifrelenmiş saklar
- Tüm team aynı certificate'ları kullanır
- CI/CD'de kolayca entegre edilir
- Yeni geliştirici ekleme çok kolay
Sık Karşılaşılan Sorunlar
| Sorun | Çözüm |
|---|---|
| "No signing certificate found" | Certificate'ı yeniden indirin veya Xcode'da hesabı yenileyin |
| "Provisioning profile doesn't match" | Profile'ı yeniden oluşturun, App ID ve entitlement'ları kontrol edin |
| "Code signing entitlements error" | Capabilities ayarlarını kontrol edin, push notification vb. |
| CI/CD'de signing başarısız | Keychain erişimini kontrol edin, certificate/profile yollarını doğrulayın |
Entitlements
Uygulamanın kullanabileceği özellikleri tanımlayan dosya:
- Push Notifications
- App Groups (widget, extension veri paylaşımı)
- iCloud
- Associated Domains (Universal Links)
- In-App Purchase
- HealthKit, HomeKit vb.
2026 İtibariyle Güncel Durum
- Xcode Cloud ile otomatik signing yönetimi daha da kolaylaştı
- EAS Build, Expo projeleri için certificate yönetimini tamamen otomatikleştiriyor
- Apple, certificate süresini bazı durumlarda uzattı
- Managed signing dışında manual signing gerekliliği azaldı
Code signing karmaşık görünebilir ama doğru kurulumla sorunsuz çalışır. Fastlane Match veya EAS ile otomatikleştirmek en pratik yaklaşımdır.