Slicing: tanımı, çalışma prensibi ve App Thinning ile ilişkisi

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

Slicing, App Store'un otomatik olarak ikili dosyanın birden çok varyantını oluşturduğu ve her birinin yalnızca belirli bir cihaz modeli için kaynaklar içerdiği bir App Thinning mekanizmasıdır. Apple Developer Documentation, 2026'ya göre Slicing, desteklenmeyen yapılandırmalar için kaynakları dağıtımdan çıkararak kurulum boyutunu küçültür. Çalışma prensibini, dilimleme varyantlarını ve sonuç doğrulamayı inceleyelim.

Anahtar Noktalar

  • Slicing — uygulama ikili dosyasını farklı mimariler, çözünürlükler ve iOS sürümleri için varyantlara ayırır
  • App Store kullanıcıya yalnızca cihazıyla eşleşen kaynakları iletir
  • Asset Catalogs — Slicing'e katılan kaynakları yönetmek için geliştiricinin ana aracı
  • GPU aileleri (Apple GPU, PowerVR, Mali) Metal gölgelendiricileri dilimlenirken de dikkate alınır
  • Doğrulama dilimlerin Xcode Organizer ve App Store Connect Build Metrics aracılığıyla yapılır

Slicing Nedir

Slicing, App Store tarafında uygulama ikili dosyasının varyantlarını (dilimler) oluşturmaktan sorumlu bir App Thinning bileşenidir. Geliştirici, desteklenen tüm yapılandırmalar için kod ve kaynaklar içeren evrensel bir yağlı ikili dosya (fat binary) yüklediğinde, App Store bunu analiz eder ve birden çok dilim oluşturur: A17 işlemcili iPhone için ayrı, M4'lü iPad için ayrı, Apple Watch için ayrı. Her dilim, yalnızca bu belirli mimari ve çözünürlük kombinasyonu için gerekli kod parçalarını ve kaynakları içerir.

iOS 9'dan önce, geliştiriciler farklı cihazlar için manuel olarak ayrı ikili dosyalar oluşturuyor veya her şeyi bir kerede içeren evrensel bir yağlı ikili dosya dağıtıyordu. Slicing bu süreci tamamen otomatikleştirdi: geliştirici Xcode'da bir proje hazırlar, App Store Connect'e bir arşiv yükler ve sunucu tarafındaki Slicing en uygun sayıda varyantı oluşturur. Kullanıcı dilimleme sürecini asla görmez — cihazı için optimize edilmiş hazır bir .app alır.

Slicing yalnızca kod ve görüntülere değil, aynı zamanda Metal gölgelendiricilerine de uygulanır. Apple GPU, PowerVR veya ARM Mali talimatlarından farklı olan kendi talimat kümesini (Metal Shading Language) kullanır. Slicing, dilime yalnızca hedef cihazın GPU ailesi için gölgelendiricileri dahil eder. Bu, özel gölgelendiricilere sahip oyunlar için özellikle önemlidir — örneğin, yüksek kaliteli post-processing efektleri yalnızca güçlü GPU'ya sahip cihazlar (iPad Pro M4, iPhone 16 Pro Max) için derlenir.

Slicing ve Basit Mimari Derlemesi Arasındaki Fark

Xcode derleyicisi birden çok mimariyle (armv7, arm64, arm64e) yağlı bir ikili dosya oluşturur, ancak kaynakları kaldırmaz — tüm çözünürlükler için tüm görüntüler .app içinde kalır. Slicing daha da ileri gider: Asset Catalogs'u, Metal gölgelendiricilerini ve Swift kitaplıklarını analiz eder, her dilimden belirli hedef için gerekli olmayanı kaldırır. Örneğin, @3x grafikleri iPhone SE dilimine girmez ve iPhone'a özel denetleyiciler (ayrı kaynaklara çıkarılmışsa) iPad Air dilimine girmez.

Slicing Nasıl Çalışır

Slicing süreci, yapının App Store Connect'e yüklenmesinden sonra başlar ve üç aşamadan oluşur: analiz, dilimleme ve paketleme. Analiz aşamasında, App Store sunucusu ikili dosyayı ayrıştırır, desteklenen mimariler, cihazlar, ekran çözünürlükleri ve iOS sürümleri hakkında bilgi çıkarır. App Store, tüm ticari Apple modellerinin teknik özelliklerine eşlenmesini kullanır — Cihaz Veritabanı her iOS sürümüyle güncellenir.

Dilimleme aşamasında, sunucu her benzersiz kombinasyon için ikili dosyanın ayrı kopyalarını oluşturur. Bunu yapmak için App Store, Asset Catalogs'dan belirli etiketlere (idiom, subtype, scale) sahip görüntüleri çıkarır, yalnızca hedef cihazla eşleşenleri seçer ve yeni bir kaynak paketi oluşturur. Swift standart kitaplığı da dilimlemeye tabidir — kullanılmayan semboller ve yöntemler ondan kaldırılır (ölü kod temizleme).

Paketleme aşamasında, her dilim ayrı bir dağıtım paketine yerleştirilir ve meta verilerle — bu dilimin hedeflediği cihaz modellerinin bir listesi — ilişkilendirilir. Kullanıcı uygulamayı indirdiğinde, App Store cihaz modeline, iOS sürümüne ve bağlantı türüne göre uygun dilimi seçer. Tam bir eşleşme yoksa, sunucu özellikler bakımından en yakın dilimi kullanır. Apple tüm varyantları CloudKit CDN ağında dünya çapında hızlı teslimat için saklar.

App Thinning Bağlamında Slicing

Slicing, App Thinning'in üç mekanizmasından biridir, ancak indirme boyutunu küçültmeye en çok katkıda bulunanıdır. Bitcode makine kodu optimizasyonundan, On-Demand Resources cihazdaki kaynak yönetiminden ve Slicing dağıtım aşamasında gereksiz kaynakların kaldırılmasından sorumludur. Slicing olmadan, ilk iki mekanizma çalışır, ancak kullanıcılar tüm cihazlar için kaynak alır ve bu da Asset Catalogs sayısına bağlı olarak boyutu %20–40 artırır.

Slicing ve Bitcode arasındaki fark, uygulama noktasındadır: Slicing kaynak düzeyinde (görüntüler, gölgelendiriciler, NIB dosyaları) çalışır, Bitcode makine kodu düzeyinde çalışır. Slicing kodu mimarilere (arm64 vs arm64e) göre ayırır, Bitcode Apple'ın kodu yeni mimariler için yeniden derlemesine olanak tanır. Bitcode + Slicing birlikte maksimum optimizasyon sağlar: Bitcode belirli bir mimari için kod üretir ve Slicing bu mimari için gereksiz kaynakları kaldırır.

On-Demand Resources ile ilişki — Slicing ve ODR örtüşmez. Slicing, hangi kaynakların cihaz dağıtımına ulaşacağını belirlerken, ODR bu kaynakların ne zaman yükleneceğini ve kaldırılacağını yönetir. Geliştirici bir kaynağı ODR etiketiyle işaretleyebilir ve Slicing, cihazla eşleşiyorsa onu dilime dahil eder. Apple minimum kurulum boyutu için üç mekanizmanın aynı anda kullanılmasını önerir.

MekanizmaOptimizasyon NesnesiNe Zaman UygulanırBoyut Üzerindeki Etkisi
SlicingKaynaklar (görüntüler, gölgelendiriciler)App Store tarafında~%30 gereksiz kaynağı kaldırır
BitcodeMakine koduKullanıcı indirdiğindeKodu mimari için optimize eder
ODRCihazdaki kaynaklarKurulumdan sonraBaşlangıç boyutunu %40–60 azaltır

Farklı Cihazlar İçin Slicing Varyantları

Slicing, birden çok boyuta göre ayrı dilimler oluşturur: işlemci mimarisi, ekran boyutu (çözünürlük), iOS sürümü ve GPU ailesi (Metal için). Mimari CPU talimat kümesini belirler: arm64 — temel 64-bit küme (iPhone 5s — iPhone X), arm64e — Pointer Authentication ve PAC desteğiyle genişletilmiş küme (iPhone XS ve sonrası, A12X+'lı iPad Pro). arm64e için dilim, arm64 cihazlarda bulunmayan bellek koruma talimatlarını içeren kodu içerir.

Ekran çözünürlüğü — Slicing'in ikinci ana boyutudur. Apple @1x (iPhone 3GS), @2x (iPhone 4 — iPhone SE 3), @3x (iPhone 6 Plus ve sonrası) ölçeklerini ve iPad'e özel (ek metriklerle 2x ve 3x) kullanır. Slicing, dilime yalnızca hedef cihazla eşleşen ölçekteki görüntüleri dahil eder. Xcode'da Asset Catalogs'un doğru şekilde düzenlenmesiyle, kaynak kümelerini manuel olarak yönetme ihtiyacı ortadan kalkar — kataloğa bir görüntü ekleyin, desteklenen cihaz türlerini belirtin.

GPU ailesi — Metal uygulamaları için kritik öneme sahip üçüncü boyuttur. Apple GPU'ları nesillere göre sınıflandırır: Apple GPU family 1 (A7), family 2 (A8), ... family 8 (M4). Metal gölgelendiricileri her aile için ayrı ayrı derlenir, çünkü Metal Shading Language talimat kümesi her GPU nesliyle genişler. Slicing, dilime yalnızca hedef cihazın GPU ailesi için gölgelendiricileri dahil ederek, oluşturma için Metal kullanan oyunların ve uygulamaların boyutunu önemli ölçüde azaltır.

Mimarinin Dilim Boyutu Üzerindeki Etkisi

CPU mimarisi dilim boyutunu doğrudan etkiler: arm64e kodu, arm64'e kıyasla ikili dosyayı %5–10 artıran ek Pointer Authentication (PAC) ve Signed Return Address talimatları içerir. Ancak bu artış, Slicing'in arm64e kodunu yalnızca A12+ işlemcili cihazların dilimlerine dahil etmesiyle dengelenir. A15 Bionic'li iPhone SE (üçüncü nesil) için Slicing, bu çipin yeteneklerine göre optimize edilmiş ayrı bir dilim oluşturur.

Xcode'da Slicing Yapılandırması

Xcode'da Slicing yapılandırması minimaldir — ana yapılandırma Asset Catalogs ve Build Settings aracılığıyla yapılır. Asset Catalog, cihaz türüne (Any, iPhone, iPad, Apple Watch, Apple TV) göre düzenlenmiş kaynakları içermeli ve ölçek ile görüntüleme modu doğru şekilde belirtilmelidir. Xcode, Deployment Target ayarlarında belirtilen hedef cihazlarla eşleşen kaynakları otomatik olarak yapıya dahil eder.

Xcode'daki ana Slicing ayarı, Build Setting App Thinning'dir. Mevcut değerler:

  • None — Slicing devre dışı, uygulama evrensel yağlı ikili dosya olarak dağıtılır
  • Automatic — Xcode varsayılan ayarlarla Slicing'i etkinleştirir
  • Manual — geliştirici Slicing için belirli kombinasyonları seçer
App Store'da yayınlama için Automatic kullanın. Manual modu, yerel bir cihazda belirli dilimleri test etmek için uygundur.

General → Deployment Info'daki Targeted Device Families, uygulamanın hangi cihaz türleri için derlendiğini belirler (iPhone / iPad / Universal). Slicing, dilimleme sırasında bu parametreye güvenir — uygulama yalnızca iPhone'u destekliyorsa, iPad için dilim oluşturulmaz. Deployment Target (minimum iOS sürümü) de Slicing'i etkiler: eski iOS sürümleri, iOS 13+ için gerekmeyen armv7 dilimleri gerektirebilir. Apple, Deployment Target'ı en son kararlı iOS sürümüne ayarlamanızı önerir — bu, dilim sayısını ve ikili dosya boyutunu azaltır.

Slicing İçin Asset Catalog Parametreleri

Maksimum Slicing verimliliği için, Asset Catalogs her kaynak için belirli etiketler kullanmalıdır. Xcode, Attributes Inspector'da görüntüler için şunları sağlar: Width Class (Any, Compact, Regular), Height Class (Any, Compact, Regular), Gamut (sRGB, Display P3), Memory (Any, Low, High), Graphics (Any, Low, High). Bu etiketleri birleştirerek, geliştirici her görüntünün hangi dilimlerde görüneceğini kontrol eder. Örneğin, Regular Width + Regular Height etiketlerine sahip bir iPad görüntüsü, yalnızca yatay yönlendirmedeki iPad dilimlerinde görünür.

bash
# Belirli bir cihaz için dilimi dışa aktar
xcodebuild -exportArchive \
  -archivePath "App.xcarchive" \
  -exportPath "sliced/" \
  -exportOptionsPlist "export.plist" \
  -thinning "iPhone17,2" # iPhone 16 Pro Max

Xcodebuild -thinning parametresi ve model tanımlayıcısıyla yalnızca bu model için bir dilim oluşturur. Tanımlayıcıların listesi Apple Cihaz Veritabanı'nda bulunabilir (biçim: iPhone17,2 — iPhone 16 Pro Max, iPad14,1 — iPad Pro 11 M4). Bu yöntem, App Store Connect'e göndermeden önce dilim boyutunu kontrol etmek için kullanışlıdır. CI/CD otomatik doğrulama için bu komutu kullanabilir — dilim boyutu sınırı aşarsa (rneğin mobil indirme için 100 MB), iş hattı bir uyarı verir.

Slicing Sonuçlarını Doğrulama

Arşivi App Store Connect'e yükledikten sonra Apple, dilim boyutları hakkında ayrıntılı istatistikler sağlar. App Store Connect → Activity → yapıyı seཡin → App Thinning — her cihaz kategorisi için Tahmini App Store Boyutunu görüntüler: iPhone, iPad, Apple Watch, tvOS. Boyutlar iOS sürümlerine ve işlemci türlerine göre ayrıştırılır. Herhangi bir dilim beklenen boyutu aşarsa, App Store Connect onu sarı bir uyarıyla işaretler.

Xcode Organizer aracılığıyla yerel doğrulama: arşivlemeden sonra Window → Organizer'ı açın, arşivi seçin ve App Thinning Profiles'a tıklayın. Xcode, mevcut proje yapılandırmasına göre her olası dilim için boyutları gösterecektir. Belirli bir Slicing profiliyle IPA oluşturmak için Export seçeneği de mevcuttur. Xcode, her dilime hangi kaynakların dahil edildiği hakkında bilgi içeren bir .app-thinning.plist dosyası oluşturur.

CI/CD'de Slicing doğrulamasını otomatikleştirmek için, -thinning ile xcodebuild kullanın ve oluşturulan .app dosyalarının boyutunu analiz edin. Apple, ayrıntılı bir rapor çıkaran app-size komut satırı aracını (Xcode Command Line Tools aracılığıyla yüklenir) sağlar: kod boyutu, kategoriye göre kaynak boyutu (görüntüler, gölgelendiriciler, NIB), Swift kitaplık boyutu. Asset Catalog optimizasyonundan önceki ve sonraki dilim boyutlarını karşılaştırmak, yanlış yapılandırma nedeniyle Slicing'e katılmayan kaynakları belirlemeye yardımcı olur.

bash
# Dilim boyutunu analiz et
app-size -m "sliced/App.app" \
  --format json

App-size, kaynak kategorilerine göre ayrıştırılmış bir JSON raporu çıkarır. Slicing doğru şekilde yapılandırılmışsa, “images” bölümü tüm varyantları değil, yalnızca bir ölçek kümesi (@2x veya @3x) içerir. Asset Catalog yapılandırma hatası, tüm ölçeklerin (@1x, @2x, @3x) dilimde bulunmasıyla kendini gösterir — bu, Xcode'un bu görüntüler için hedef cihazı belirleyemediği ve Slicing'in çalışmadığı anlamına gelir.

Sıkça Sorulan Sorular

Slicing, TestFlight aracılığıyla dağıtılan uygulamaları etkiler mi?

Evet, TestFlight da Slicing'i destekler. Bir test kullanıcısı TestFlight aracılığıyla uygulamayı indirdiğinde, Apple sunucusu test kullanıcısının cihazı için optimize edilmiş bir dilim sunar. App Store Connect, Enterprise ve Ad Hoc yapıları hariç, TestFlight dahil tüm dağıtımlar için Slicing'i otomatik olarak yönetir.

Belirli bir kaynak için Slicing devre dışı bırakılabilir mi?

Evet, Asset Catalogs'da her görüntü için belirli cihaz türlerinin işaretleri kaldırılabilir. Xcode, Attributes Inspector'da kaynağın hangi Idiom (iPhone, iPad, Apple Watch, Mac) ve ölçekler için dahil edileceğini belirtmeye olanak tanır. Bir kaynak tüm cihazlar için gerekiyorsa, herhangi bir ölçekte Universal kullanın.

Slicing özel çerçevelerle nasıl çalışır?

Özel çerçeveler (.framework) de XCFramework (birden çok mimariyle) olarak derlenmişse Slicing'e katılır. App Store, dilime yalnızca hedef cihazla eşleşen çerçeve mimarisini dahil eder. Statik kitaplıklar (.a) Slicing'e tabi değildir — ikili dosyaya tamamen gömülürler.

App Store yapı boyutu neden Xcode Organizer'daki boyuttan farklı?

Xcode Organizer tahmini boyutu (estimated size) gösterir — Apple sunucularındaki gerçek dilimlemeyi dikkate almayan öngörülen bir boyut. App Store Connect, Slicing sonrası gerçek boyutu gösterir ve bu, sunucu yerel olarak bulunmayan ek optimizasyonlar (LZFSE algoritmaları, Zstandard kaynak sıkıştırması) uyguladığı için tahminden %10–15 daha küçük olabilir.

Slicing SwiftUI kaynaklarını destekler mi?

Evet, Slicing SwiftUI ile tamamen uyumludur. Asset Catalogs, SwiftUI tarafından Image, Color ve SymbolImage türleri aracılığıyla kullanılır. Slicing, arayüz oluşturmak için SwiftUI veya UIKit kullanılmasından bağımsız olarak vektör ve raster görüntülere, SF Symbols'e ve Metal gölgelendiricilerine uygulanır.

Özet

  • Slicing — App Store tarafında ikili dosyayı dilimleme mekanizması, belirli bir cihaz için gereksiz kaynakları kaldırır
  • Üç boyut dilimleme: CPU mimarisi (arm64/arm64e), ekran çözünürlüğü (@2x/@3x) ve GPU ailesi (Metal)
  • Asset Catalogs — Slicing'e katılan kaynakları yönetmek için ana araç
  • App Store yalnızca cihaz modeli, iOS sürümü ve bağlantı türüyle eşleşen kaynakları iletir
  • Xcode Organizer ve App Store Connect, desteklenen tüm yapılandırmalar için dilim boyutlarını gösterir
  • App-size Xcode CL Tools aracı, CI/CD'de Slicing verimliliğini doğrulamaya olanak tanır
  • TestFlight da Slicing'i destekler (Enterprise ve Ad Hoc dağıtımın aksine)

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