Kemarin, pembaruan OS berikutnya untuk perangkat seluler dari Google dirilis. Salah satu inovasi utama Android 10 adalah "Project Mainline". Saya akan mencoba mencari tahu apa itu, mengapa dan bagaimana cara kerjanya.
Selama bertahun-tahun, Google telah mencoba menyelesaikan masalah pembaruan keamanan di Android. Android saat ini diinstal pada beberapa miliar perangkat, tetapi sebagian besar produsen sangat enggan untuk mendukung perangkat setelah rilis. Ini mengarah pada fakta bahwa ada banyak perangkat yang beroperasi di mana versi dengan kerentanan diketahui diinstal.
Langkah besar pertama untuk menyederhanakan pembaruan Android adalah "Project Treble", yang "membagi" Android menjadi dua bagian: bergantung pada perangkat keras dan independen. Yang memfasilitasi rilis pembaruan ke versi Android baru. Langkah besar berikutnya adalah Project Mainline. Ini memungkinkan Anda untuk memperbarui masing-masing komponen sistem operasi tanpa memperbarui seluruh sistem, mirip dengan memperbarui aplikasi.
Mengapa ini dibutuhkan?
Dalam arsitektur Android, sistem operasi (sering disebut sebagai firmware) sangat terpisah dari data dan aplikasi pengguna. Itu terletak di bagian terpisah dari memori flash, hanya-baca dan dalam versi terbaru Android ditandatangani secara digital untuk kontrol integritas. Untuk aplikasi Android yang merupakan bagian dari sistem operasi, pembaruan dimungkinkan dengan penempatan versi aplikasi baru di bagian memori pengguna. Memperbarui bagian lain dari sistem operasi (layanan, perpustakaan, dll.), Misalnya menggunakan manajer paket, seperti pada distribusi Linux, adalah mustahil. Untuk koreksi semacam itu, pabrikan terpaksa merilis pembaruan seluruh sistem. Pada saat yang sama, ketika menggunakan Layanan Seluler Google (sebagian besar perangkat menggunakannya), setiap pembaruan memerlukan sertifikasi oleh Google. Dan "Project Mainline" menyelesaikan masalah ini, sekarang komponen sistem dapat diperbarui secara individual, mirip dengan aplikasi Android. Selain pembaruan keamanan, itu juga menyederhanakan memperbarui pengaturan sistem dan data, seperti zona waktu (tzdata).
Bagaimana cara kerjanya
Inti dari Project Mainline adalah wadah baru untuk aplikasi sistem APEX (kependekan dari Android Pony EXpress).
Di Android 10, Google mengidentifikasi 13 paket APEX dalam sistem yang dapat diperbarui secara independen:
- Keamanan: Codec Media, Komponen Kerangka Media, Penyelesai DNS, Conscrypt
- Privasi: Dokumen UI, Pengendali Izin, ExtServices
- Konsistensi: Data zona waktu, ANGLE (pengembang ikut serta), Modul Metadata, Komponen jaringan, Login Portal Captive, Konfigurasi Izin Jaringan
Paket APEX dapat diinstal mirip dengan APK menggunakan "installer paket", adb atau Google Play.
Puncak
File APEX mirip dengan yang digunakan untuk aplikasi APK Andoird.
APEX adalah arsip zip yang berisi 4 file utama:
- apex_manifest.json - berisi nama paket dan versinya;
- AndroidManifest.xml - paket metadata (mirip dengan APK);
- apex_payload.img - gambar sistem file ext4;
- apex_pubkey - kunci publik untuk memverifikasi tanda tangan gambar.
Layanan sistem manajer APEX (apexd) berfungsi dengan paket APEX.
Manajer puncak
- Pemasang paket, setelah menentukan bahwa itu adalah paket APEX, meneruskannya ke manajer APEX.
- Manajer APEX memeriksa paket dan versinya.
- Jika pemeriksaan lulus, itu membongkar ke bagian pengguna memori, memperbarui catatan dalam database-nya dan reboot perangkat.
- Saat APEX melakukan boot, manajer memeriksa semua paket dari database, membuat perangkat loop untuk gambar ext4 dan memasangnya di sepanjang jalur / apex / name @ ver.
Di dalam gambar dari paket APEX, mungkin ada:
- file yang dapat dieksekusi
- pustaka bersama (.so)
- Perpustakaan JAR,
- file data
- file konfigurasi.
Paket Tanda Tangan APEX
Paket APEX ditandatangani dua kali, dengan dua kunci yang berbeda. Gambar ext4 ditandatangani dengan satu kunci (dm-verity digunakan, seperti pada boot Android Verified), paket APEX (file zip) ditandatangani dengan kunci kedua, mirip dengan paket APK.
Kernel Linux
APEX menggunakan sejumlah mekanisme kernel Linux, seperti perangkat loop, DM-verity.
APEX didukung pada kernel versi 4.4 dan lebih tinggi. Untuk perangkat pada versi kernel yang lebih lama, hanya bekerja dalam mode "flat", yang tidak mendukung pembaruan, didukung.
Referensi:
android.googlesource.com/platform/system/apex/+/refs/heads/master/docs/README.mdandroid-developers.googleblog.com/2019/05/fresher-os-with-projects-treble-and-mainline.html