Kalau Anda adalah pemilik iPhone atau iPad dengan kapasitas 16 GB, Anda mungkin akan menyesal membelinya dulu seandainya Anda cepat menyadari kalau iDevice dengan kapasitas segitu lumayan cepat penuh. Terutama karena ukuran aplikasi yang semakin lama semakin besar, ditambah lagi dengan kebutuhan ruang kosong yang cukup besar ketika ingin melakukan update iOS terbaru.

Well, worry no more, my friend!

Apple punya cara untuk membuat iDevice 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

App Thinning

Sejak Apple mengeluarkan iDevice 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 device sekaligus, yaitu iDevice dengan layar kecil dan juga Retina. Akibatnya, komponen-komponen yang dibawa oleh sebuah aplikasi menjadi ganda.

Universal apps

Namun dengan adanya fitur app Slicing pada iOS 9, pengguna tidak perlu mendownload versi “full” sebuah aplikasi, tetapi hanya perlu mendownload komponen yang tepat dan cocok untuk iDevice target. Ini memungkinkan aplikasi yang di-download bisa lebih cepat dan menjadi lebih “thin” alias ramping ukurannya sehingga tidak memakan banyak ruang.

App slicing

Sebagai contoh, Anda punya sebuah iPad 2, yang layarnya belum Retina dan prosesornya masih 32-bit. Ketika Anda mendownload 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 mendownload 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 iDevice 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 mengupload 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 diupload (oleh pengembang) ke App Store untuk setiap jenis iDevice yang didukung sebelum didistribusikan ke pengguna. Dengan bitcode, pengembang tidak perlu mengupload 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 iDevices, 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 iDevice 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 dengan 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

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.

On Demand Resources

Dengan ODR, sebuah game yang memiliki banyak level bisa dipisah resources-nya menjadi beberapa bagian/level dan baru akan di-download atau direquest 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/diinstall ke iDevice.

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 mendownload aplikasi via iTunes maka iTunes akan mendownload aplikasi versi “full” atau universal dari App Store lalu kemudian men-slice-nya untuk iDevice Anda.

Referensi:
[iOS Developer Library]