Bitcode: ara bayt kodu ve derleme süreci

Yazar: IT Sectr Yayınlanma: 2026-04-17 Okuma süresi: 9 dk

Bitcode, bir iOS uygulamasının derleme aşamasında programın bir ara temsilidir. Makine kodunun aksine, Bitcode belirli bir işlemci mimarisine bağlı değildir. Apple Developer Documentation'a göre, App Store hedef mimari için Bitcode'u yeniden derleyerek performansı artırabilir ve kurulum dosyası boyutunu küçültebilir. Geliştirici Bitcode'u App Store'a gönderir ve mağaza, her cihaz türü için optimize edilmiş bir ikili dosya oluşturur.

Anahtar Noktalar

  • Bitcode, bir iOS projesinin derleme aşamasında oluşturulan ara LLVM bayt kodudur
  • App Store, kullanıcının cihaz işlemcisi için Bitcode'u yeniden derler
  • Optimizasyon ikili dosya boyutunun donanıma bağlı talimatlar aracılığıyla elde edilir
  • Etkinleştirme Bitcode, Xcode ayarlarında Enable Bitcode bayrağı ile yapılır
  • Sınırlama — Bitcode yalnızca iOS ve tvOS için desteklenir, macOS için değil

iOS Geliştirmede Bitcode Nedir

Bitcode, LLVM derleyici altyapısı tarafından oluşturulan bir programın ara temsilidir (Intermediate Representation, IR). Apple, Xcode 7 ve iOS 9'dan itibaren watchOS uygulamaları için zorunlu, iOS ve tvOS için isteğe bağlı olarak Bitcode desteğini başlattı. Xcode 14'ten itibaren, watchOS dışındaki tüm platformlar için bu gereklilik kaldırıldı.

Bitcode'un Tarihçesi

Ara kod temsili kavramı, 2000'li yıllardan beri Illinois Üniversitesi'nde Chris Lattner tarafından kurulan LLVM projesinin bir parçası olarak var olmuştur. Apple, 2011'de LLVM'yi Xcode için uyarladı ve 2015'te Bitcode'u App Store'a yeniden göndermeden uygulamaları güncellemenin bir yolu olarak tanıttı. Teknoloji, WWDC 2015'te “What's New in Xcode” oturumunda duyuruldu.

Bitcode ve Makine Kodu Arasındaki Fark

Makine kodu, belirli bir işlemci için ikili talimatlardan oluşur: arm64, armv7 veya x86_64. Bitcode, donanımdan bağımsız bir biçimde depolanır ve App Store'un tek bir kaynak temsilinden farklı mimariler için optimize edilmiş ikili dosyalar oluşturmasına olanak tanır. Bu temel fark, teknolojinin tüm avantajlarını belirler.

ÖzellikBitcodeMakine Kodu
Mimari bağımlılığıBağımsızİşlemciye bağlı
İkili dosya boyutuKompaktDaha büyük
Yeniden derleme yeteneğiEvetHayır
App Store desteğiYeniden derlenirOlduğu gibi kullanılır
Hata ayıklamaSınırlıTam destek

Bitcode yürütülebilir bir dosya değildir. Geliştiricinin proje meta verileriyle birlikte App Store'a gönderdiği ikili biçimdeki LLVM IR'dir. Uygulama mağazası yeniden derleme sürecini çalıştırarak kodu her hedef platform ve işletim sistemi sürümü için uyarlar.

iOS Derlemesinde Bitcode Nasıl Çalışır

Bitcode oluşturma süreci, Swift veya Objective-C kaynak kodunu LLVM IR'ye dönüştüren derleyici ön ucu ile başlar. Bağlama aşamasında, Xcode IR'yi .bc (Bitcode) biçimindeki dosyalara paketler ve bunlar daha sonra .xcarchive ile birlikte App Store'a gönderilir. App Store da kendi tarafında yeniden derleme sürecini çalıştırır.

LLVM Aşaması ve Ara Kod Oluşturma

LLVM altyapısı üç bölümden oluşur: ön uç (C/ObjC için Clang, Swift için Swift Frontend), Middle-End iyileştirici ve arka uç (makine kodu oluşturucu). Bitcode, montaj talimatı oluşturmaya geçmeden ilk iki aşamanın sonucudur. Middle-End, platformdan bağımsız iyileştirmeler gerçekleştirir: ölü kod kaldırma, içselleştirme ve sabit katlama.

swift
// Swift kaynak kodu örneği
func calculateSum(a: Int, b: Int) -> Int {
    return a + b
}

// Derleme sonrası LLVM IR (basitleştirilmiş)
; define i32 @calculateSum(i32 %a, i32 %b)
; %result = add i32 %a, %b
; ret i32 %result

IR oluşturulduktan sonra derleyici, temsil düzeyinde bir dizi iyileştirme gerçekleştirir: ölü kod kaldırma, işlev içselleştirme ve sabit katlama. Bu iyileştirmeler mimariden bağımsızdır ve Bitcode'da korunur. App Store'da yeniden derleme sırasında, belirli bir işlemci için talimat yeniden sıralama gibi mimariye bağlı iyileştirmeler eklenir.

App Store'da Yeniden Derleme

App Store Connect, Bitcode ile arşivi alır ve kendi derleme altyapısını çalıştırır. Sistem, kullanıcının cihazının hedef mimarisini belirler ve makine kodu oluşturarak belirli işlemci özelliklerine göre daha da optimize eder. arm64e (A12+ ve M serisi işlemciler) için ek güvenlik iyileştirmeleri uygulanır.

Bu sürece App Thinning denir — bir cihaza yalnızca mimarisi için gerekli kaynakları ve kodu ileten bir teknoloji. A17 Pro işlemcili bir iPhone kullanıcısı, eski mimariler için gereksiz talimatlar olmadan arm64e için optimize edilmiş bir ikili dosya alır. Bu, indirme süresini azaltır ve cihazda yer tasarrufu sağlar.

Bitcode Kullanımının Avantajları

Bitcode, iOS uygulama geliştiricileri için birkaç önemli avantaj sunar. Bunlardan en önemlisi, App Store'a bir güncelleme göndermeye gerek kalmadan yeni Apple işlemcileri için otomatik optimizasyondur. Bu, özellikle armv7'den arm64'e geçiş gibi yeni mimarilere geçiş yaparken önemlidir.

Yeni Mimariler İçin Optimizasyon

Apple yeni bir mimariye sahip bir işlemci yayınladığında, Bitcode ile gönderilen uygulamalar otomatik olarak bunun için yeniden derlenir. Geliştiricinin projeyi yeniden oluşturması ve bir güncelleme yayınlaması gerekmez — App Store, kullanıcı ilk indirdiğinde bunu kendi tarafında yapar. Bu, yıllarca bakımı yapılan uzun ömürlü uygulamalar için özellikle önemlidir.

İkili Dosya Boyutunun Azaltılması

App Thinning, Bitcode ile birleştiğinde yüklenen uygulama boyutunu %15–40 oranında azaltabilir. App Store, yalnızca belirli bir cihaz için gerekli makine talimatlarını oluşturur ve diğer mimariler ile farklı iOS sürümleri için kodu ortadan kaldırır. Pratikte bu, yeni iPhone'lu bir kullanıcının kompakt bir ikili dosya alması anlamına gelir.

Apple WWDC 2015 Session 102'ye göre, Bitcode ve App Thinning kullanımı, tüm mimarileri içeren evrensel bir ikili dosyaya kıyasla indirilen uygulama boyutunu ortalama %25 azaltabilir. 100 MB'lık bir uygulama için, kullanıcının cihazında 40 MB'a kadar tasarruf sağlanabilir.

  • Otomatik uyum — geliştiricinin projeyi yeniden oluşturmasına gerek kalmadan yeni işlemciler için
  • İndirme süresinin azaltılması — kullanıcının cihazında uygulama indirme süresi
  • Basitleştirilmiş dağıtım — tüm mimariler için tek bir arşiv, tek meta veri seti
  • Gelecek uyumluluğu — uygulama henüz yayınlanmamış Apple işlemcilerinde çalışır

Xcode Projesinde Bitcode Nasıl Etkinleştirilir

Bitcode yapılandırması, Xcode'un derleme ayarlarında yapılır. Enable Bitcode parametresi Build Settings'te bulunur ve yeni projeler için varsayılan olarak etkindir, ancak geliştiriciler hata ayıklama veya Bitcode desteği olmayan üçüncü taraf kitaplıkları kullanırken devre dışı bırakabilir.

Build Settings Üzerinden Yapılandırma

objective-c
// Build Settings -> Apple Clang - Code Generation
// Enable Bitcode = YES

// Veya ayrı hedefler için Info.plist aracılığıyla
@property (nonatomic, assign) BOOL enableBitcode;
- (void)configureBuildSettings {
    // Yapılandırmada Bitcode durumunu kontrol etme
    if (self.enableBitcode) {
        NSLog(@"Bitcode is enabled for this target");
    } else {
        NSLog(@"Bitcode is disabled");
    }
}

Arşivde Bitcode olup olmadığını kontrol etmek için, Xcode Organizer üzerinden .xcarchive dosyasını açın veya Terminal'de otool -l komutunu çalıştırın. İkili dosyada bir __LLVM bölümünün bulunması, Bitcode'un etkinleştirildiğini ve doğru şekilde paketlendiğini onaylar. Bölüm yoksa, derleme sırasında Bitcode oluşturulmamıştır.

Terminal Üzerinden Kontrol

bash
# Arşivde Bitcode varlığını kontrol etme
otool -l YourApp.app/YourApp | grep __LLVM

# Çıktı: __LLVM bölümü varsa — Bitcode mevcut
# Çıktı boşsa — Bitcode etkin değil veya oluşturulmamış

# Ayrıca size komutunu kullanarak da kontrol edebilirsiniz
size -m -l YourApp.app/YourApp | grep __LLVM

CocoaPods veya SPM aracılığıyla üçüncü taraf kitaplıkları kullanırken, tüm bağımlılıkların Bitcode ile derlendiğinden emin olun. En az bir kitaplık Bitcode'u desteklemiyorsa, Xcode arşivleme sırasında bağlama hatası oluşturacaktır. CocoaPods için, alt spesifikasyonlarda bitcode_enabled bayrağını kontrol edin veya enable_bitcode ile use_frameworks! kullanın.

Bitcode'un Sınırlamaları ve Tuzakları

Bitcode, her tür iOS projesi için evrensel bir çözüm değildir. Teknolojinin, geliştiricinin derleme yapılandırmasında seçeneği etkinleştirmeden önce dikkate alması gereken sınırlamaları vardır. Bu sınırlamaları anlamak, arşivleme ve yayınlama sırasında sorunları önlemeye yardımcı olur.

Kitaplık Uyumluluğu

Tüm üçüncü taraf kitaplıklar Bitcode desteğiyle gelmez. Bir kitaplık yalnızca Bitcode olmadan derlenmiş ikili dosya olarak dağıtılıyorsa, seçenek etkinleştirilmiş proje derlenmez. Bu durumda, geliştirici ya Bitcode'u devre dışı bırakmalı ya da satıcıdan Bitcode destekli bir sürüm talep etmelidir. Bu, özellikle artık güncellenmeyen eski kitaplıklar için geçerlidir.

Hata Ayıklama ve Çökme Raporları

Bitcode ile derlenmiş uygulamalardan gelen çökme raporları ek işlem gerektirir. Yeniden derlenen kod için semboller (dSYM), App Store tarafından oluşturulur ve Xcode Organizer aracılığıyla indirilebilir. İlgili dSYM dosyaları yüklenmeden, çökme raporlarındaki çağrı yığını okunamaz hale gelir ve sorun teşhisini zorlaştırır.

  • dSYM yükleme — yeniden derlemeden sonra App Store'dan çökme günlüklerini çözmek için zorunludur
  • Arşiv boyutu — Bitcode ile .xcarchive geliştiricinin diskinde daha fazla yer kaplar
  • Derleme süresi — Bitcode oluşturma, projenin derleme aşamasını yaklaşık %10–15 artırır
  • macOS — Bitcode, macOS uygulamaları ve watchOS uygulamaları için desteklenmez
  • Eski projeler — büyük projelerin taşınması tüm bağımlılıkların güncellenmesini gerektirebilir

iOS 17 ve Xcode 15 itibarıyla Apple, App Store'da yayınlama için Bitcode'un zorunlu olarak etkinleştirilmesini gerektirmez. Ancak watchOS uygulamaları için Bitcode, App Store Connect politika düzeyinde zorunlu bir gereklilik olarak kalır. Geliştiricilere, tüm bağımlılıklar destekliyorsa yeni projeler için Bitcode'u etkinleştirmeleri önerilir.

Sıkça Sorulan Sorular

App Store'da yayınlamak için Bitcode'u etkinleştirmek zorunlu mu?

iOS ve tvOS uygulamaları için, Xcode 14'ten itibaren Bitcode zorunlu değildir. watchOS için Bitcode desteği zorunlu olmaya devam etmektedir. Apple, yeni projeler için Bitcode'u etkinleştirmeyi önerir ancak onsuz yayınlamayı engellemez.

Bitcode, App Store'da uygulama boyutunu nasıl etkiler?

Bitcode, App Store'un App Thinning uygulamasına olanak tanır — yalnızca kullanıcının cihaz mimarisi için makine kodu oluşturur. Bu, projede desteklenen mimari sayısına bağlı olarak indirilen ikili dosya boyutunu %15–40 oranında azaltır.

Bitcode etkinken dSYM dosyalarını yüklemek gerekli mi?

Evet, dSYM dosyaları yeniden derlenmiş ikili dosyalardan çökme raporlarını sembolize etmek için gereklidir. App Store, arşiv işlendikten sonra Xcode Organizer aracılığıyla dSYM indirme olanağı sunar. Bunlar olmadan, Crashlytics ve konsoldaki çağrı yığını yalnızca bellek adreslerini içerecektir.

Swift Package Manager Bitcode'u destekliyor mu?

SPM, bağımlılıklar ikili dosyalar yerine kaynak kodunda dağıtılırsa Bitcode'u destekler. SPM aracılığıyla ikili bağımlılıklar Bitcode içeren bir sürüm sağlamalıdır, aksi takdirde seçenek etkinleştirilmiş proje derlenmez.

Bitcode'un normal makine kodundan farkı nedir?

Bitcode, donanımdan bağımsız bir ara LLVM IR temsilidir ve bir işlemci tarafından doğrudan yürütülemez. Makine kodu, belirli bir mimari (arm64, x86_64) için hazır talimatlar içerir ve ek derleme olmadan yürütülür.

Özet

  • Bitcode, Xcode'da iOS uygulamaları derlenirken oluşturulan ara LLVM IR temsilidir
  • App Store, App Thinning uygulayarak kullanıcının cihaz mimarisi için Bitcode'u yeniden derler
  • İndirilen uygulama boyutu, gereksiz makine talimatları ortadan kaldırılarak %15–40 azaltılır
  • Yeni Apple işlemcileri, geliştiricinin bir güncellemeyi yeniden yayınlamasına gerek kalmadan otomatik olarak desteklenir
  • Bitcode etkinleştirme, Xcode projesinin Build Settings'inde Enable Bitcode bayrağı ile yapılandırılır
  • Sınırlamalar, çökme raporları için dSYM dosyaları gerekliliğini ve tüm üçüncü taraf kitaplıkların uyumluluğunu içerir
  • Öneri — yeni projeler için Bitcode'u etkinleştirin, ancak kullanılan tüm bağımlılıkların desteğini doğrulayın

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.

Projeyi tartış

Ayrıca okuyun