App Thinning — nedir, hangi bileşenlerden oluşur ve nasıl çalışır

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

App Thinning, yalnızca kullanıcının belirli cihazı için gerekli kaynakları teslim ederek yüklenen uygulamanın boyutunu azaltan bir Apple teknolojisidir. Apple Developer Documentation, 2026'ya göre App Thinning üç mekanizma içerir: Slicing, Bitcode ve On-Demand Resources. Her bir bileşeni ve dağıtım boyutu üzerindeki etkisini inceleyelim.

Önemli Noktalar

  • App Thinning — App Store ve cihaz tarafından iOS uygulama boyutunu optimize etme süreci
  • Slicing ikili dosyayı farklı işlemci mimarileri ve ekran çözünürlükleri için varyantlara ayırır
  • Bitcode — App Store'un belirli cihaz için yeniden derlediği programın ara temsili
  • On-Demand Resources kullanımdan sonra kaynakları boşaltarak cihazda yer açılmasını sağlar
  • İndirme boyutu uygulamanın kaynak setine bağlı olarak %30-50 oranında azaltılabilir

App Thinning Nedir

App Thinning — Apple tarafından iOS 9 (Eylül 2015) ile birlikte tanıtılan kapsamlı bir iOS uygulama dağıtım optimizasyonu teknolojisidir. App Thinning'in amacı, kaynak kodunu ve işlevselliği değiştirmeden kullanıcının cihazına indirdiği uygulamanın boyutunu en aza indirmektir. Teknoloji üç düzeyde çalışır: derleme aşamasında, App Store tarafında (dağıtım) ve cihazda (kaynak yönetimi).

App Thinning'den önce geliştiriciler, olası tüm cihazlar için kaynakları (@2x ve @3x görüntüler, 32-bit ve 64-bit kod, farklı GPU'lar için Metal shader'lar) ikili dosyaya dahil ediyordu. Bu, uygulama boyutunun şişmesine yol açıyordu: Retina HD ekranlı iPhone 6 Plus kullanıcısı, hiç kullanılmayan iPad Pro için vektör kaynakları alıyordu. Apple, derleme işinin bir kısmını App Store sunucularına taşıyarak bu sorunu çözdü.

Apple'ın araştırmasına (WWDC 2015, Session 412) göre, birden çok mimariyi ve çözünürlüğü destekleyen tipik bir uygulama, App Thinning uygulandıktan sonra %30-50 oranında küçültülebilir. Çok sayıda yüksek çözünürlüklü dokuya sahip oyunlar için kazanç %70-80'e ulaşabilir. Apple teknolojiyi geliştirmeye devam ediyor: iOS 17'de ARM64e için optimizasyonlar ve Swift Package Manager kullanan uygulamalar için On-Demand Resources ile iyileştirilmiş çalışma eklendi.

App Thinning'in Çözdüğü Sorun

Mobil uygulamaların boyutu sürekli artıyor. Sensor Tower (2025)'a göre, iOS uygulamalarının ortalama boyutu son 5 yılda %45 arttı. Sınırlı veri planı veya yavaş interneti olan kullanıcılar için her megabayt önemlidir. App Thinning, geliştiricinin katılımı olmadan bu sorunu çözer — proje ayarlarında desteği etkinleştirin ve derlemeyi App Store Connect'e yükleyin.

App Thinning Nasıl Çalışır

App Thinning süreci, uygulama arşivinin App Store Connect'e yüklenmesinden sonra başlar. App Store ikili dosyayı analiz eder ve mimarilere (armv7, arm64, arm64e), ekran çözünürlüklerine (iPhone, iPad) ve iOS sürümlerine göre bölümlere ayırır. Her kombinasyon için ayrı bir varyant oluşturulur. Kullanıcı “İndir” düğmesine tıkladığında, App Store cihaz modelini, iOS sürümünü ve bağlantı türünü (Wi-Fi / mobil ağ) belirler ve yalnızca ilgili varyantı gönderir.

Kullanıcı için süreç şeffaftır — “hafif sürüm” seçeneği veya ayar iletişim kutusu yoktur. App Store, indirme isteği sırasında sunucuya gönderilen cihaz meta verilerine dayanarak en uygun varyantı otomatik olarak seçer. Cihaz Wi-Fi kullanıyorsa, App Store daha yüksek kaliteli kaynaklara (örneğin, iPhone 16 Pro için ProRes video) sahip bir varyant gönderebilir. Mobil ağ üzerinden indirme yapılırken mümkün olan minimum set kullanılır.

İkinci optimizasyon düzeyi — Bitcode'dur. ENABLE_BITCODE seçeneği etkinleştirildiğinde, Xcode uygulamayı makine koduna değil, ara LLVM temsiline derler. App Store, Bitcode'u kullanıcının işlemci mimarisi için yeniden derler ve Apple'ın geliştiricinin uygulamayı güncellemesine gerek kalmadan yeni nesil çipler (A17, M4) için derleyici optimizasyonları uygulamasına olanak tanır. Bitcode, watchOS ve tvOS için zorunludur, ancak iOS için isteğe bağlıdır.

App Thinning Bileşenleri: Slicing, Bitcode, ODR

App Thinning, her biri optimizasyonun belirli bir yönünden sorumlu olan üç bağımsız mekanizmadan oluşur. Slicing, ikili dosyayı mimari ve ekran çözünürlüğüne göre varyantlara ayırır. Geliştirici, Slicing'i Asset Catalogs aracılığıyla yapılandırır — Xcode, dilime otomatik olarak yalnızca hedef cihazla eşleşen kaynakları dahil eder. Örneğin, iPhone SE (üçüncü nesil) yalnızca @2x görüntüler ve arm64 kodu alırken, iPad Pro M4 @3x görüntüler ve arm64e kodu alacaktır.

Bitcode — LLVM IR (Intermediate Representation) — programın makineden bağımsız bir temsilidir. Bitcode etkinleştirildiğinde, Xcode nihai makine kodunu oluşturmaz, ara temsili kaydeder. App Store Connect, derlemeyi yüklerken Bitcode'u alır ve desteklenen tüm cihazların mimarileri için yeniden derler. Bitcode, Apple'ın geliştiricinin derleme aşamasında bulunmayan optimizasyonları uygulamasına olanak tanır — örneğin, M4 yongalarında yeni işlemci talimatlarının (SME, SVE) kullanımı.

On-Demand Resources (ODR) — kullanımdan sonra uygulama kaynaklarını boşaltmayı sağlayan üçüncü mekanizmadır. Geliştirici, kaynakları (oyun seviyeleri, onboarding görüntüleri, videolar) ODR etiketleriyle işaretler. iOS, işaretlenmiş kaynakları ihtiyaç duyuldukça arka planda indirir ve bellek yetersizliğinde veya kullanımdan sonra boşaltır. ODR, özellikle büyük miktarda içeriğe sahip oyunlar için etkilidir — ilk seviyeler uygulamayla birlikte verilebilir ve geri kalanı ilerleme kaydedildikçe indirilebilir.

Her Bileşen Ne Zaman Seçilmeli

App Thinning mekanizmalarının seçimi, uygulamanın türüne ve hedef kitlesine bağlıdır. Slicing'in her zaman etkinleştirilmesi önerilir — Asset Catalogs'un doğru organizasyonu dışında geliştiriciden ek bir işlem gerektirmez ve boyutta %20-30 oranında istikrarlı bir azalma sağlar. Bitcode, uygulama özel Metal shader'lar kullanıyorsa veya yeniden derleme olmadan yeni Apple mimarilerini desteklemeyi planlıyorsa etkinleştirilmeye değerdir. ODR, büyük hacimli içeriğe sahip uygulamalar için uygundur — oyunlar, fotoğraf düzenleyiciler, akış uygulamaları.

Tipik bir iş uygulaması (veri akışları, formlar, REST API) için Slicing ve onboarding görüntüleri için minimum ODR yapılandırması yeterlidir. 3D grafiklere sahip oyunlar, her üç mekanizmadan da yararlanır: Slicing gereksiz shader'ları kaldırır, Bitcode işlemeyi GPU için optimize eder ve ODR tamamlanan seviyeleri boşaltır. Apple'a (WWDC 2024) göre, her üç mekanizmanın kombinasyonu, evrensel ikili dosyaya kıyasla ilk kurulum boyutunu ortalama %45-55 oranında azaltır.

MekanizmaNe YaparNerede ÇalışırGeliştirici Eylemi Gerektirir
SlicingDiğer cihazlar için kaynakları kaldırırApp Store + cihazAsset Catalogs
BitcodeMimari için yeniden derlemeApp StoreENABLE_BITCODE=YES
ODRİhtiyaç halinde kaynak indirmeCihazProjede ODR etiketleri

Xcode'da App Thinning Yapılandırma

Bir Xcode projesinde App Thinning'i etkinleştirmek için birkaç adım izlenmelidir. Slicing, derleme ayarlarında App Thinning aracılığıyla yapılandırılır: Build Settings → App Thinning. Üç değer mevcuttur: None (optimizasyon yok), Automatic (varsayılan otomatik ayar) ve Manual (test için belirli varyantların seçimi). Apple çoğu proje için Automatic önerir.

Asset Catalogs için kaynakları doğru şekilde organize etmek önemlidir: görüntüler genişlik/yükseklik belirtilerek evrensel bir kataloğa yerleştirilir ve Xcode otomatik olarak @1x, @2x ve @3x varyantlarını oluşturur. Xcode derleme sırasında yalnızca projede kullanılan çözünürlükleri dahil eder. Metal shader'lar her GPU ailesi için ayrı ayrı derlenir — Apple GPU, PowerVR, Mali — bu da Asset Catalogs aracılığıyla yönetilir.

Bitcode, Build Settings'te ENABLE_BITCODE = YES bayrağıyla etkinleştirilir. iOS için bu bayrak isteğe bağlıdır (Xcode 14'ten itibaren varsayılan olarak kapalı), ancak watchOS ve tvOS için zorunludur. Üçüncü taraf kitaplıklar kullanan bir projede Bitcode etkinleştirildiğinde, tüm kitaplıklar da Bitcode ile derlenmelidir, aksi takdirde derleme başarısız olur. Bitcode, derleme süresini %20-30 artırır, ancak gelecekteki mimarilerle tam uyumluluk sağlar.

App Thinning Sonuçlarını Kontrol Etme

App Store Connect'e yüklendikten sonra, dilim boyutları Activity → Build Metric bölümünde kontrol edilebilir. App Store Connect, farklı cihazlar için Tahmini App Store Boyutunu görüntüler. Yerel kontrol için Xcode, yerel makinede dilimler oluşturmak üzere -exportArchive bayrağı ve thinning seçeneğiyle xcodebuild komutunu sağlar. Slicing sonucu, arşivlemeden sonra Organizer'da (Window → Organizer) görülebilir — App Thinning Profiles sekmesi farklı cihazlar için boyutları gösterir.

bash
# Slicing yerel kontrolü
xcodebuild -exportArchive \
  -archivePath "App.xcarchive" \
  -exportPath "export/" \
  -exportOptionsPlist "export.plist" \
  -thinning "<thin-for-all-variants>"

Xcodebuild, -thinning bayrağıyla mimari, bit genişliği ve GPU'nun her kombinasyonu için .app dosyaları oluşturur. <thin-for-all-variants> parametresi olası tüm varyantları oluşturur — kontrol için kullanışlıdır. CI hatları için iPhone14,4 (iPhone SE 3) gibi belirli bir kombinasyon belirtin. Ortaya çıkan .app dosyaları app-size yardımcı programıyla analiz edilebilir.

App Thinning'in Faydaları ve Etkisi

App Thinning'in ana faydası, son kullanıcı için indirme boyutunun azaltılmasıdır. Apple'a (WWDC 2024) göre, her üç App Thinning mekanizmasını kullanan tipik bir uygulama, mobil ağ üzerinden ortalama %40 daha hızlı indirilir ve diskte %35 daha az yer kaplar. Bu, kurulum dönüşümünü doğrudan etkiler: Sensor Tower'a göre, uygulama boyutundaki her 10 MB, dönüşümü %1 azaltır.

İkinci fayda — Bitcode aracılığıyla gelecekteki cihazlar için optimizasyondur. Apple, geliştiricinin katılımı olmadan Bitcode uygulamalarını yeni mimariler için yeniden derleyebilir. Örneğin, Intel'den Apple Silicon'a (M1) geçiş sırasında, Bitcode uygulamaları ek derleme olmadan Rosetta 2 aracılığıyla macOS'ta çalışıyordu. Bitcode'u etkinleştirmeyen geliştiriciler, uygulamalarını arm64 için yeniden derlemek zorunda kaldı.

Üçüncü fayda — ODR (On-Demand Resources) cihaz depolama yükünü azaltır. Asphalt 8: Airborne gibi düzinelerce seviyeye sahip oyunlar, ilerleme kaydedildikçe yeni parkurları indirmek için ODR kullanır. Geliştirici, uygulamayla birlikte indirilen kaynaklar için Initial Install Tags ve kurulumdan sonra arka planda indirilen içerik için Prefetch Tags ayarlayabilir. Apple, ODR sınırlarını kontrol eder: istek başına 512 MB'a kadar ve cihazda toplam 20 GB önbelleğe kadar.

App Thinning'in Sınırlamaları

App Thinning'in uygulama tasarlarken dikkate alınması gereken birkaç önemli sınırlaması vardır. Birincisi, Slicing, Enterprise (in-house) veya Ad Hoc aracılığıyla dağıtılan uygulamalar için geçerli değildir — bu derlemeler tüm varyantları içerir ve App Store'dan geçmez. Slicing'i test etmek için geliştirici, Apple sunucularında Slicing'i de işleyen TestFlight'ı kullanabilir.

İkincisi, Bitcode, derleme süresini ve .xcarchive arşiv boyutunu yaklaşık %30-50 artırır. Tüm üçüncü taraf kitaplıklar Bitcode'u desteklemez — en az bir bağımlılık Bitcode olmadan derlenmişse, ENABLE_BITCODE ile proje derlemesi başarısız olur. Apple, Bitcode'u etkinleştirmeden önce kitaplık uyumluluğunu kontrol etmenizi önerir. Ayrıca Bitcode, Swift Package Manager'ı tam olarak desteklemez — bazı Swift paketleri Bitcode derlemesini bozabilir.

Üçüncüsü, On-Demand Resources içeriğin anında kullanılabilirliğini garanti etmez — ODR indirmesi arka planda gerçekleşir ve cihaz düşük pil modunda veya zayıf sinyaldeyse gecikebilir. Geliştirici, NSBundleResourceRequest aracılığıyla ODR indirme durumlarını işlemeli ve kullanıcıya bir ilerleme göstergesi göstermelidir. ODR indirme hatası, uygulama işlevselliğini engellememelidir — bir graceful fallback gereklidir.

Sıkça Sorulan Sorular

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

Hayır, App Thinning zorunlu değildir. App Thinning olmadan uygulama, tüm kaynak varyantlarını içeren tek bir evrensel ikili dosya olarak App Store'a yüklenir. Ancak Apple, kullanıcı deneyimini iyileştirdiği ve App Store sunucularındaki yükü azalttığı için App Thinning'in etkinleştirilmesini şiddetle tavsiye eder.

Yayınlamadan önce App Thinning sonrası uygulama boyutunu nasıl kontrol edebilirim?

Xcode Organizer, arşivlemeden sonra farklı cihazlar için Tahmini App Store Boyutunu gösterir. App Store Connect, Activity bölümünde derleme yüklendikten sonra dilimlerin tam boyutlarını görüntüler. Yerel kontrol için -thinning bayrağıyla xcodebuild kullanın.

App Thinning SwiftUI'yı destekliyor mu?

Evet, App Thinning SwiftUI ile tamamen uyumludur. Slicing, SwiftUI'nin Image ve Color aracılığıyla kullandığı Asset Catalogs ile çalışır. Bitcode, tüm bağımlılıkların da Bitcode ile derlenmesi koşuluyla SwiftUI projelerini destekler. ODR, framework'ten bağımsız olarak NSBundleResourceRequest aracılığıyla yönetilir.

App Thinning uygulama başlatma süresini etkiler mi?

Slicing başlatma süresini etkilemez — kaldırılan kaynaklar yüklenmez. Bitcode, JIT derlemesi nedeniyle ilk çalıştırmada başlatma süresini biraz artırabilir. ODR, Initial Install Tags kaynakları henüz indirilmemişse başlatma süresini artırabilir. Apple, yalnızca kritik kaynakların Initial Install olarak işaretlenmesini önerir.

Üçüncü taraf bir kitaplık Bitcode'u desteklemiyorsa ne yapmalı?

Proje Bitcode gerektiriyor ancak kitaplık desteklemiyorsa — iki yol: kitaplığı projeden kaldırın ve Bitcode uyumlu bir alternatif bulun veya Build Settings'te ENABLE_BITCODE aracılığıyla belirli bir hedef için Bitcode'u devre dışı bırakın. Apple, iOS için Bitcode'un devre dışı bırakılmasına izin verir, ancak watchOS ve tvOS zorunlu destek gerektirir.

Özet

  • App Thinning — Slicing, Bitcode ve ODR aracılığıyla iOS uygulama boyutunu azaltmak için Apple'ın kapsamlı teknolojisi
  • Slicing ikili dosyayı belirli mimari ve ekran çözünürlüğü için varyantlara ayırır
  • Bitcode — App Store'un kullanıcının cihaz mimarisi için yeniden derlediği LLVM temsili
  • On-Demand Resources kaynakları ihtiyaç halinde indirip boşaltarak cihazda yer tasarrufu sağlar
  • İndirme boyutu üç mekanizmanın doğru yapılandırmasıyla %30-50 azalır
  • Xcode Organizer ve App Store Connect, dilim boyutlarını kontrol etmek için araçlar sağlar
  • Enterprise ve Ad Hoc derlemeleri Slicing'den geçmez — yalnızca App Store ve TestFlight

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