Kalau Anda adalah pemilik iPhone atau iPad dengan kapasitas penyimpanan 16 GB, Anda mungkin akan menyesal membelinya dulu seandainya Anda cepat menyadari kalau perangkat iOS dengan kapasitas segitu sangat cepat penuh. Terutama karena ukuran aplikasi yang semakin lama semakin besar, ditambah lagi dengan kebutuhan ruang kosong yang cukup besar ketika ingin melakukan upgrade ke iOS terbaru.
Well, worry no more, my friend!
Apple punya cara untuk membuat perangkat iOS berkapasitas rendah (ahem.. 16 GB) tetap usable. App Thinning adalah salah satunya.
App Thinning terdiri dari tiga bagian, yaitu app Slicing, Bitcode, dan On-demand Resources.
Slicing
Sejak Apple mengeluarkan iPhone dengan layar resolusi tinggi alias Retina display, ukuran aplikasi menjadi lebih besar karena adanya komponen-komponen atau resources/assets (file-file gambar/suara) yang mendukung dua tipe perangkat sekaligus, yaitu perangkat iOS dengan layar kecil dan juga Retina. Akibatnya, komponen-komponen yang dibawa oleh sebuah aplikasi menjadi ganda.
Namun dengan adanya fitur app Slicing di iOS 9, pengguna tidak perlu men-download versi “full” dari sebuah aplikasi, tetapi hanya perlu men-download komponen yang tepat dan cocok untuk perangkat target. Ini memungkinkan aplikasi yang di-download bisa lebih cepat dan menjadi lebih “thin” alias ramping ukurannya sehingga tidak memakan banyak ruang.
Sebagai contoh, Anda punya sebuah iPad 2, yang layarnya belum Retina dan prosesornya masih 32-bit. Ketika Anda men-download sebuah aplikasi iPad ataupun yang bersifat universal (iPhone+iPad) maka sebenarnya yang Anda download itu adalah aplikasi yang bukan hanya ditujukan untuk iPad 2, tetapi juga untuk iPad 3, iPad 4, dan juga iPad Air yang resolusi layarnya lebih tinggi (2048×1536 px) dibanding iPad 2 (1024×768 px). Tentu saja aplikasi yang ditujukan untuk semua jenis iPad berukuran lebih besar karena komponen-komponen di dalamnya dipersiapkan untuk semua jenis iPad. Akibatnya, ketika Anda men-download aplikasi tersebut ada banyak komponen yang tidak terpakai karena tidak cocok untuk jenis iPad Anda.
Dengan app Slicing, App Store akan menyediakan aplikasi yang sudah dipersiapkan untuk kebutuhan perangkat Anda, baik itu dari segi kecocokan resolusi layar, GPU, jenis prosesornya, dll.
Bitcode
Pada dasarnya, Bitcode merujuk ke sebuah tipe kode atau format file “LLVM Bitcode“.
Menurut halaman dokumentasi Apple:
Bitcode is an intermediate representation of a compiled program. Apps you upload to iTunes Connect that contain bitcode will be compiled and linked on the App Store. Including bitcode will allow Apple to re-optimize your app binary in the future without the need to submit a new version of your app to the store.
Untuk membuat ukuran aplikasi menjadi lebih kecil, Apple memungkinkan para pengembang aplikasi untuk meng-upload aplikasi yang berisi bitcode ke iTunes Connect (aplikasi berbasis web khusus untuk para pengembang untuk mengelola aplikasi milik mereka di App Store atau Mac App Store).
Bitcode yang disertakan pada aplikasi memungkinkan Apple (App Store) untuk mengkalkulasi dan mengoptimalkan aplikasi yang di-upload (oleh pengembang) ke App Store untuk setiap jenis perangkat yang didukung sebelum didistribusikan ke pengguna. Dengan bitcode, pengembang tidak perlu meng-upload ulang versi terbaru dari aplikasinya dan kembali melewati proses review, karena Apple lah yang akan melakukan proses (kompilasi) tersebut.
Intinya, bitcode memungkinkan App Store dapat mengoptimalkan aplikasi untuk setiap jenis perangkat, entah itu 32 atau 64-bit. Pengguna pemilik iPhone berprosesor 32-bit akan mendapatkan aplikasi yang dioptimalkan untuk prosesor 32-bit, dan begitupun untuk pengguna iPhone 64-bit, akan mendapatkan aplikasi yang dioptimalkan untuk prosesor 64-bit. Setiap perangkat mendapatkan performa aplikasi yang sama, dengan ukuran yang berbeda.
Untuk aplikasi iOS, bitcode bersifat opsional. Sedangkan pada aplikasi watchOS bitcode wajib, dan untuk aplikasi Mac bitcode belum didukung.
Bitcode dan app Slicing agak sedikit mirip, tetapi app Slicing lebih ke proses optimasi aplikasi oleh Apple berdasarkan ukuran layar, jenis prosesor, dll.
Slicing: optimasi file/assetss (file gambar/suara),
Bitcode: optimasi kode.
On-Demand Resources
The App Store hosts the resources on Apple servers and manages the downloads for you. On-demand resources enable faster downloads and smaller app sizes, improving the first-time launch experience.
Hampir sama dengan app Slicing, bedanya On-Demand Resource (ODR) ini adalah penghematan dari resource/data, lebih dikhususkan untuk aplikasi yang memiliki level, misalnya game.
Dengan ODR, sebuah game yang memiliki banyak level bisa dipisah resources-nya menjadi beberapa bagian/level dan baru akan di-download atau di-request hanya ketika pengguna yang memainkannya sudah akan sampai ke level permainan berikutnya. Begitu juga dengan item yang menjadi in-app purchase, resource-nya baru akan di-download hanya ketika pengguna melakukan pembelian. Dengan begitu, ukuran dari app/game baru akan bertambah besar seiring dengan level permainan yang dimainkan pengguna. Jadinya, lebih hemat ruang.
Slicing via iTunes
Bersamaan dengan rilisnya iOS 9 ke publik, Apple juga merilis pembaruan iTunes khusus untuk iOS 9. Versi terbaru iTunes ini, rupanya, juga melakukan slicing untuk aplikasi sebelum ditransfer/di-install ke perangkat.
For iOS apps, sliced apps are supported on the latest iTunes and on devices running iOS 9.0 and later; otherwise, the App Store delivers universal apps to customers.
Ini artinya, kalau Anda men-download aplikasi via iTunes maka iTunes akan men-download aplikasi versi “full” atau universal dari App Store lalu kemudian men-slice-nya untuk perangkat Anda.
Referensi:
https://help.apple.com/xcode/mac/current/#/devbbdc5ce4f