Slicing — adalah mekanisme App Thinning di mana App Store secara otomatis membuat beberapa varian file biner, masing-masing berisi sumber daya hanya untuk model perangkat tertentu. Menurut Apple Developer Documentation, 2026, Slicing mengecualikan sumber daya untuk konfigurasi yang tidak didukung dari distribusi, mengurangi ukuran instalasi. Mari kita bahas prinsip kerja, varian pemotongan dan pemeriksaan hasil.
Poin utama
Slicing — adalah komponen App Thinning yang bertanggung jawab untuk membuat varian (irisan) file biner aplikasi di sisi App Store. Ketika pengembang mengunggah file biner universal (fat binary) yang berisi kode dan sumber daya untuk semua konfigurasi yang didukung, App Store menganalisisnya dan menghasilkan beberapa irisan: terpisah untuk iPhone dengan prosesor A17, terpisah untuk iPad dengan M4, terpisah untuk Apple Watch. Setiap irisan hanya berisi fragmen kode dan sumber daya yang diperlukan untuk kombinasi arsitektur dan resolusi tertentu.
Sebelum iOS 9, pengembang secara manual membuat file biner terpisah untuk perangkat yang berbeda atau mengirimkan fat binary universal yang berisi semuanya sekaligus. Slicing sepenuhnya mengotomatiskan proses ini: pengembang menyiapkan satu proyek di Xcode, mengunggah satu arsip ke App Store Connect, dan Slicing di sisi server menciptakan jumlah varian yang optimal. Pengguna tidak pernah melihat proses pemotongan — ia menerima .app siap pakai yang dioptimalkan untuk perangkatnya.
Slicing tidak hanya diterapkan pada kode dan gambar, tetapi juga pada shader Metal. Apple GPU menggunakan kumpulan instruksinya sendiri (Metal Shading Language) yang berbeda dari instruksi PowerVR atau ARM Mali. Slicing memasukkan ke dalam irisan hanya shader untuk keluarga GPU perangkat target. Ini sangat penting untuk game dengan shader kustom — misalnya, efek pasca-pemrosesan yang sangat detail hanya dikompilasi untuk perangkat dengan GPU yang kuat (iPad Pro M4, iPhone 16 Pro Max).
Kompilator Xcode membuat fat binary dengan beberapa arsitektur (armv7, arm64, arm64e), tetapi tidak menghapus sumber daya — semua gambar untuk semua resolusi tetap di dalam .app. Slicing melangkah lebih jauh: ia menganalisis Asset Catalogs, shader Metal, dan pustaka Swift, menghapus dari setiap irisan apa yang tidak diperlukan untuk tujuan tertentu. Misalnya, dari irisan untuk iPhone SE tidak masuk grafis @3x, dan dari irisan untuk iPad Air — kontroler khusus iPhone (jika dipisahkan ke sumber daya terpisah).
Proses Slicing dimulai setelah build diunggah ke App Store Connect dan terdiri dari tiga tahap: analisis, pemotongan, dan pengemasan. Pada tahap analisis, server App Store menguraikan file biner, mengekstrak informasi tentang arsitektur, perangkat, resolusi layar, dan versi iOS yang didukung. App Store menggunakan pemetaan semua model komersial Apple ke spesifikasi teknisnya — basis data perangkat (Device Database) diperbarui dengan setiap rilis iOS.
Pada tahap pemotongan, server membuat salinan terpisah dari file biner untuk setiap kombinasi unik. Untuk ini, App Store mengekstrak gambar dengan tag tertentu (idiom, subtype, scale) dari Asset Catalogs, memilih hanya yang sesuai dengan perangkat target, dan menyusun paket sumber daya baru. Pustaka standar Swift juga dipotong — simbol dan metode yang tidak digunakan oleh aplikasi tertentu dihapus darinya (dead code stripping).
Pada tahap pengemasan, setiap irisan ditempatkan dalam paket distribusi terpisah dan dikaitkan dengan metadata — daftar model perangkat yang dituju irisan ini. App Store saat mengunduh aplikasi oleh pengguna memilih irisan yang sesuai berdasarkan model perangkat, versi iOS, dan jenis koneksi. Jika tidak ada kecocokan yang tepat, server menggunakan irisan yang paling dekat dalam hal spesifikasi. Apple menyimpan semua varian di jaringan CDN CloudKit untuk pengiriman cepat ke seluruh dunia.
Slicing — adalah salah satu dari tiga mekanisme App Thinning, tetapi memberikan kontribusi terbesar dalam mengurangi ukuran unduhan. Bitcode bertanggung jawab untuk optimalisasi kode mesin, On-Demand Resources — untuk mengelola sumber daya di perangkat, dan Slicing — untuk menghapus sumber daya yang berlebihan pada tahap distribusi. Tanpa Slicing, dua mekanisme pertama berfungsi, tetapi pengguna menerima sumber daya untuk semua perangkat, yang meningkatkan ukuran sebesar 20-40% tergantung pada jumlah Asset Catalogs.
Perbedaan antara Slicing dan Bitcode terletak pada titik penerapan: Slicing bekerja pada tingkat sumber daya (gambar, shader, file NIB), Bitcode — pada tingkat kode mesin. Slicing membagi kode berdasarkan arsitektur (arm64 vs arm64e), Bitcode memungkinkan Apple untuk mengkompilasi ulang kode untuk arsitektur baru. Bitcode + Slicing bersama-sama memberikan optimalisasi maksimal: Bitcode menghasilkan kode untuk arsitektur tertentu, dan Slicing menghapus sumber daya yang tidak perlu untuk arsitektur tersebut.
Hubungan dengan On-Demand Resources — Slicing dan ODR tidak tumpang tindih. Slicing memutuskan sumber daya mana yang akan masuk ke distribusi ke perangkat, dan ODR mengelola kapan sumber daya tersebut dimuat dan dibongkar. Pengembang dapat menandai sumber daya dengan tag ODR, dan Slicing akan memasukkannya ke dalam irisan jika sesuai dengan perangkat. Apple merekomendasikan penggunaan ketiga mekanisme secara bersamaan untuk ukuran instalasi minimal.
| Mekanisme | Objek optimalisasi | Kapan diterapkan | Efek pada ukuran |
|---|---|---|---|
| Slicing | Sumber daya (gambar, shader) | Di sisi App Store | Menghapus ~30% sumber daya berlebih |
| Bitcode | Kode mesin | Saat diunduh oleh pengguna | Optimalisasi kode untuk arsitektur |
| ODR | Sumber daya di perangkat | Setelah instalasi | Mengurangi ukuran awal sebesar 40-60% |
Slicing membuat irisan terpisah berdasarkan beberapa dimensi: arsitektur prosesor, ukuran layar (resolusi), versi iOS, dan keluarga GPU (untuk Metal). Arsitektur menentukan kumpulan instruksi CPU: arm64 — kumpulan dasar 64-bit (iPhone 5s — iPhone X), arm64e — kumpulan yang diperluas dengan dukungan Pointer Authentication dan PAC (iPhone XS dan lebih baru, iPad Pro dengan A12X+). Irisan untuk arm64e berisi kode dengan instruksi perlindungan memori yang tidak tersedia pada perangkat arm64.
Resolusi layar — dimensi kunci kedua dari Slicing. Apple menggunakan skala @1x (iPhone 3GS), @2x (iPhone 4 — iPhone SE 3), @3x (iPhone 6 Plus dan lebih baru) dan yang spesifik untuk iPad (2x dan 3x dengan metrik tambahan). Slicing memasukkan ke dalam irisan hanya gambar dengan skala yang sesuai dengan perangkat target. Dengan organisasi Asset Catalogs yang benar di Xcode, ini menghilangkan kebutuhan untuk mengelola set sumber daya secara manual — cukup tambahkan gambar ke katalog, tentukan jenis perangkat yang didukung.
Keluarga GPU — dimensi ketiga, sangat penting untuk aplikasi Metal. Apple menggunakan klasifikasi GPU berdasarkan generasi: Apple GPU family 1 (A7), family 2 (A8), ... family 8 (M4). Shader Metal dikompilasi untuk setiap keluarga secara terpisah, karena kumpulan instruksi Metal Shading Language berkembang dengan setiap generasi GPU. Slicing memasukkan ke dalam irisan hanya shader untuk keluarga GPU perangkat target, yang secara signifikan mengurangi ukuran game dan aplikasi yang menggunakan Metal untuk rendering.
Arsitektur CPU secara langsung mempengaruhi ukuran irisan: kode arm64e berisi instruksi tambahan Pointer Authentication (PAC) dan Signed Return Address yang meningkatkan file biner sebesar 5-10% dibandingkan dengan arm64. Namun, peningkatan ini dikompensasi oleh fakta bahwa Slicing memasukkan kode arm64e hanya ke dalam irisan untuk perangkat dengan prosesor A12+. Untuk iPhone SE (generasi ketiga) dengan A15 Bionic, Slicing membuat irisan terpisah yang dioptimalkan untuk kemampuan chip ini.
Konfigurasi Slicing di Xcode minimal — konfigurasi utama dilakukan melalui Asset Catalogs dan Build Settings. Asset Catalog harus berisi sumber daya yang diorganisir berdasarkan jenis perangkat (Any, iPhone, iPad, Apple Watch, Apple TV) dengan indikasi skala dan mode tampilan yang benar. Xcode secara otomatis memasukkan ke dalam kompilasi hanya sumber daya yang sesuai dengan perangkat target yang ditentukan dalam pengaturan Deployment Target.
Pengaturan kunci Slicing di Xcode — Build Setting App Thinning. Nilai yang tersedia:
Targeted Device Families di General → Deployment Info menentukan untuk jenis perangkat apa aplikasi dibangun (iPhone / iPad / Universal). Slicing bergantung pada parameter ini saat memotong — jika aplikasi hanya mendukung iPhone, irisan untuk iPad tidak dibuat. Deployment Target (versi iOS minimum) juga mempengaruhi Slicing: untuk versi iOS lama mungkin diperlukan irisan armv7 yang tidak diperlukan untuk iOS 13+. Apple merekomendasikan untuk mengatur Deployment Target ke versi iOS stabil terbaru — ini mengurangi jumlah irisan dan ukuran file biner.
Untuk efisiensi Slicing maksimal, Asset Catalogs harus menggunakan tag khusus untuk setiap sumber daya. Xcode menyediakan di Attributes Inspector untuk gambar: Width Class (Any, Compact, Regular), Height Class (Any, Compact, Regular), Gamut (sRGB, Display P3), Memory (Any, Low, High), Graphics (Any, Low, High). Dengan menggabungkan tag ini, pengembang mengontrol ke dalam irisan mana setiap gambar akan masuk. Misalnya, gambar untuk iPad dengan tag Regular Width + Regular Height hanya akan masuk ke irisan untuk iPad dalam orientasi landscape.
# Ekspor irisan untuk perangkat tertentu
xcodebuild -exportArchive \
-archivePath "App.xcarchive" \
-exportPath "sliced/" \
-exportOptionsPlist "export.plist" \
-thinning "iPhone17,2" # iPhone 16 Pro Max
Xcodebuild dengan parameter -thinning dan pengidentifikasi model membuat irisan hanya untuk model tersebut. Daftar pengidentifikasi dapat ditemukan di Apple Device Database (format: iPhone17,2 — iPhone 16 Pro Max, iPad14,1 — iPad Pro 11 M4). Metode ini berguna untuk memeriksa ukuran irisan sebelum mengirim ke App Store Connect. CI/CD dapat menggunakan perintah ini untuk verifikasi otomatis — jika ukuran irisan melebihi batas (misalnya, 100 MB untuk unduhan seluler), pipeline mengeluarkan peringatan.
Setelah mengunggah arsip ke App Store Connect, Apple menyediakan statistik terperinci tentang ukuran irisan. App Store Connect → Activity → pilih build → App Thinning — menampilkan Estimated App Store Size untuk setiap kategori perangkat: iPhone, iPad, Apple Watch, tvOS. Ukuran dipecah berdasarkan versi iOS dan jenis prosesor. Jika suatu irisan melebihi ukuran yang diharapkan, App Store Connect menandainya dengan peringatan kuning.
Pemeriksaan lokal melalui Xcode Organizer: setelah pengarsipan, buka Window → Organizer, pilih arsip dan klik App Thinning Profiles. Xcode akan menampilkan ukuran untuk setiap kemungkinan irisan berdasarkan konfigurasi proyek saat ini. Juga tersedia opsi Export untuk membuat IPA dengan profil Slicing tertentu. Xcode menghasilkan file .app-thinning.plist dengan informasi tentang sumber daya apa yang masuk ke setiap irisan.
Untuk mengotomatiskan pemeriksaan Slicing di CI/CD, gunakan xcodebuild dengan -thinning dan analisis ukuran file .app yang dibuat. Apple menyediakan alat baris perintah app-size (diinstal melalui Xcode Command Line Tools) yang menghasilkan laporan terperinci: ukuran kode, ukuran sumber daya per kategori (gambar, shader, NIB), ukuran pustaka Swift. Perbandingan ukuran irisan sebelum dan sesudah optimalisasi Asset Catalogs membantu mengidentifikasi sumber daya yang tidak berpartisipasi dalam Slicing karena konfigurasi yang salah.
# Analisis ukuran irisan
app-size -m "sliced/App.app" \
--format json
App-size menghasilkan laporan JSON dengan perincian berdasarkan kategori sumber daya. Jika Slicing dikonfigurasi dengan benar, di bagian „images” hanya akan ada satu set skala (@2x atau @3x), bukan semua varian. Kesalahan konfigurasi Asset Catalogs terlihat dari fakta bahwa semua skala (@1x, @2x, @3x) hadir dalam irisan — ini berarti Xcode tidak dapat menentukan perangkat target untuk gambar-gambar ini, dan Slicing tidak berfungsi.
Pertanyaan yang sering diajukan
Ya, TestFlight juga mendukung Slicing. Ketika penguji mengunduh aplikasi melalui TestFlight, server Apple mengirimkan irisan yang dioptimalkan untuk perangkat penguji. App Store Connect secara otomatis memproses Slicing untuk semua distribusi, termasuk TestFlight, kecuali build Enterprise dan Ad Hoc.
Ya, di Asset Catalogs untuk setiap gambar Anda dapat menghapus centang pada jenis perangkat tertentu. Xcode memungkinkan di Attributes Inspector untuk menentukan untuk Idiom (iPhone, iPad, Apple Watch, Mac) dan skala mana sumber daya harus disertakan. Jika sumber daya diperlukan untuk semua perangkat, gunakan Universal dengan skala apa pun.
Framework kustom (.framework) juga berpartisipasi dalam Slicing jika dikompilasi sebagai XCFramework (dengan beberapa arsitektur). App Store memasukkan ke dalam irisan hanya arsitektur framework yang sesuai dengan perangkat target. Pustaka statis (.a) tidak dikenakan Slicing — pustaka tersebut disematkan sepenuhnya ke dalam file biner.
Xcode Organizer menampilkan estimated size — ukuran yang diperkirakan tanpa mempertimbangkan pemotongan aktual di server Apple. App Store Connect menampilkan ukuran sebenarnya setelah Slicing, yang bisa 10-15% lebih kecil dari perkiraan, karena server menerapkan optimalisasi tambahan (algoritma kompresi LZFSE, Zstandard) yang tidak tersedia secara lokal.
Ya, Slicing sepenuhnya kompatibel dengan SwiftUI. Asset Catalogs digunakan oleh SwiftUI melalui tipe Image, Color, SymbolImage. Slicing diterapkan pada gambar vektor dan raster, simbol SF Symbols, dan shader Metal terlepas dari apakah SwiftUI atau UIKit digunakan untuk membangun antarmuka.
Ringkasan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga