Cydia Substrate

Dalam dunia jailbreak iOS, Cydia Substrate atau yang dulunya bernama Mobile Substrate adalah sebuah framework (kerangka kerja) yang dibuat oleh Saurik (@saurik), orang yang sama yang membuat dan mengembangkan Cydia.

Cydia Substrate (atau singkatnya disebut Substrate) adalah framework yang memungkinkan dan memudahkan para developer untuk membuat fitur-fitur dan fungsi tambahan untuk iOS melalui jailbreak.

Fitur-fitur tambahan yang dimaksud pastinya sudah sering Anda dengar, yaitu disebut “tweak” di Cydia.

Substrate disebut juga sebagai code injection platform karena Substrate bekerja dengan cara menginjeksikan kode-kode ke program atau aplikasi yang sedang berjalan (di memori). Dengan begitu, developer dapat menimpa, mengubah atau menambahkan fitur/fungsi baru ke program atau aplikasi bawaan yang berjalan tanpa memodifikasi program/aplikasi original.

Kita ambil contoh SpringBoard, yang merupakan launcher untuk iOS. SpringBoard adalah sebuah aplikasi (SpringBoard.app) yang mengelola Home screen dan seisinya (antarmuka, statusbar, dock, ikon, folder, dll).

Misalnya saja ada seorang pengguna yang menginstall sebuah tweak untuk menambahkan sebuah fungsi baru di Home screen, contohnya ingin mengubah ukuran label ikon. Saat SpringBoard.app pertama kali dijalankan (saat booting), Substrate akan memeriksa SpringBoard di memori dan juga memeriksa apa saja instruksi yang diberikan tweak tersebut. Setelah diperiksa dan diketahui bahwa pengguna menginginkan ikon labelnya menjadi lebih besar, maka maka Substrate akan modifikasi kode-kode SpringBoard yang sedang berjalan di memori dengan potongan kode-kode baru yang diberikan tweak tadi untuk memperbesar label ikon. Begitu proses modifikasi selesai, maka versi SpringBoard yang telah dimodifikasi yang akan dijalankan, menggantikan SpringBoard original.

Beberapa tweak bisa mengubah sebuah fitur/fungsi iOS dengan cepat, tapi terkadang pula ada perubahan yang membutuhkan reboot/restart sebelum fitur baru tersebut diterapkan. Tergantung dari jenis tweak dan apa saja yang diubah. Tetapi pada umumnya perubahan pada Home screen membutuhkan reboot karena SpringBoard dijalankan bersamaan dengan nyalanya perangkat, bukan sesuai kemauan pengguna.

Proses injeksi atau modifikasi kode seperti ini berlangsung dengan cepat, dan tidak mengubah file-file original di sistem karena Substrate hanya mengubah kode-kode di memori.

Karena kemudahan yang diberikan untuk membuat tweak baru, Substrate ini sudah menjadi platform tersendiri di dunia jailbreak dan cukup banyak digunakan oleh developer untuk membuat aplikasi/tweak Cydia.

Nah, karena banyaknya jumlah tweak Cydia yang menggantungkan fiturnya pada Substrate, maka Substrate menjadi salah satu komponen terpenting di Cydia. Tapi tenang, Substrate biasanya terinstall otomatis bersamaan dengan Cydia, jadi Anda tidak perlu repot-repot menginstallnya terlebih dahulu sebelum menginstall app/tweak favorit Anda di Cydia.

Namun yang perlu Anda tahu adalah, terkadang Substrate tidak kompatibel sepenuhnya dengan versi iOS terbaru (dengan asumsi versi iOS terbaru itu sudah bisa dijailbreak). Kalau ini terjadi, maka akan ada banyak aplikasi dan tweak Cydia yang tidak bisa berjalan dengan sempurna karena tweak-tweak tersebut bergantung pada Substrate.

Salah satu alasan kenapa Substrate terkadang tidak kompatibel dengan versi iOS terbaru adalah karena versi Substrate yang terinstall pada saat itu tidak cocok dengan jenis jailbreak yang dirilis pada waktu itu. Untuk memperbaikinya biasanya membutuhkan perbaikan pada sisi program jailbreaknya atau perbaikan dari Substrate yang langsung dirilis oleh Saurik di Cydia, ataupun kolaborasi antara pembuat jailbreak dan Saurik.

Dengan sifatnya sebagai ekstensi atau penambah fitur (yang juga menambahkan kode-kode baru), maka tidak tertutup kemungkinan akan ada crash yang disebabkan bentroknya kode-kode Substrate satu dan lainnya.

Pada saat sebuah tweak mengalami crash, biasanya yang diserang adalah SpringBoard yang ditandai dengan gagal booting atau gagal masuk ke Home screen. Pada saat crash seperti ini terjadi, biasanya iDevice dipaksa masuk ke “safe mode” yang ditandai dengan munculnya dialog “we apologize for any inconvenience but springboard has just crashed“. Pada kondisi ini aplikasi atau tweak Cydia dinonaktifkan tetapi pengguna masih bisa membuka Cydia dan menghapus tweak yang bermasalah atau menggangu jalannya sistem.

Selain itu, pengguna juga bisa menonaktifkan fungsi aplikasi atau tweak-tweak Cydia dengan cara menonaktifkan Substrate untuk sementara dengan cara masuk ke. Cara ini disebut dengan “boot ke no-substrate“, yang berarti booting ke kondisi di mana Substrate dinonaktifkan. Cara masuk ke no-substrate adalah dengan menekan tombol volume atas (+) pada saat proses booting berlangsung (muncul logo Apple). “No-substrate” akan memaksa Substrate untuk berhenti bekerja sehingga tweak penyebab crash juga berhenti. Pengguna kemudian bisa membuka Cydia dan menghapus tweak yang diduga bermasalah dan bisa kembali menyalakan iDevicenya dengan normal.

Baca juga: Perbedaan “Safe Mode” dan “No Substrate mode”