Android 10 menyertakan dukungan untuk membuat partisi odm
menggunakan sistem build Android.
Tentang partisi ODM
Produsen desain asli (ODM) menyesuaikan paket dukungan papan vendor (BSP) system-on-chip (SoC) ke perangkat spesifik mereka (papan mereka). Hal ini memungkinkan mereka untuk mengimplementasikan modul kernel untuk komponen khusus board, daemon khusus board, atau fitur mereka sendiri pada lapisan abstraksi perangkat keras (HAL). Mereka mungkin juga ingin mengganti atau menyesuaikan komponen SoC.
Pada rilis Android yang lebih rendah, penyesuaian seperti itu mencegah penggunaan satu image vendor untuk perangkat dengan SoC yang sama (atau dengan SoC berbeda, namun dalam keluarga yang sama). Di Android 10 dan lebih tinggi, Anda dapat menggunakan partisi odm
terpisah untuk penyesuaian, yang memungkinkan Anda menggunakan satu gambar vendor untuk beberapa SKU perangkat keras.
Menggunakan partisi produk dan ODM
Android 9 menambahkan dukungan untuk membuat partisi product
, memungkinkan penggunaan satu image sistem untuk beberapa SKU perangkat lunak yang disediakan oleh image product.img
berbeda. Meskipun partisi product
ditujukan untuk SKU perangkat lunak, partisi odm
ditujukan untuk SKU perangkat keras.
Dengan partisi produk dan ODM khusus, Anda dapat menggunakan partisi system
untuk menghosting kode generik untuk berbagi di antara banyak SKU perangkat lunak, dan partisi vendor
untuk menghosting kode BSP khusus SoC untuk berbagi di antara beberapa perangkat berdasarkan SoC yang diberikan.
Menggunakan partisi terpisah memiliki kelemahan, seperti kesulitan dalam mengelola ruang disk (misalnya, Anda harus mencadangkan ruang dalam jumlah terbatas untuk pertumbuhan di masa mendatang). Namun, dukungan Android 10 untuk partisi dinamis menghilangkan masalah disk, dan memungkinkan partisi ulang perangkat selama pembaruan over-the-air (OTA) .
komponen ODM
Partisi odm
berisi komponen khusus ODM berikut (mirip dengan partisi vendor
), yang tercantum dalam tabel berikut.
Komponen khusus ODM | Lokasi |
---|---|
Modul kernel yang dapat dimuat (LKM) | /odm/lib/modules/*.ko |
Perpustakaan asli | /odm/lib[64] |
HAL | /odm/lib[64]/hw |
Kebijakan SE | /odm/etc/selinux |
Data objek VINTF | /odm/etc/vintf |
file init.rc | /odm/etc/init |
Properti sistem | /odm/build.prop |
Hamparan sumber daya runtime (RRO) | /odm/overlay/*.apk |
Aplikasi | /odm/app/*.apk |
Aplikasi Priv | /odm/priv-app/*.apk |
perpustakaan Jawa | /odm/framework/*.jar |
Konfigurasi sistem Kerangka Android | /odm/etc/sysconfig/* dan /odm/etc/permissions/* |
Tidak ada gambar khusus
Jangan gunakan gambar khusus karena tidak mendukung hal berikut:
- Pemasangan modul ke target tertentu. Gambar khusus mendukung penyalinan artefak ke dalam gambar, tetapi tidak dapat memasang modul ke partisi tertentu dengan menentukan partisi target sebagai bagian dari aturan pembangunan.
- Segera.
custom_images
tidak dapat dibuat menggunakan sistem build Soong. - pembaruan OTA. Gambar khusus digunakan sebagai gambar ROM pabrik yang tidak dapat di-OTA.
Mempertahankan ABI antar partisi
Partisi odm
merupakan perpanjangan dari partisi vendor
. Saat mempertimbangkan stabilitas antarmuka biner aplikasi (ABI), ingatlah arsitektur berikut.
- Tidak ada stabilitas ABI antara partisi
odm
danvendor
. Kedua partisi harus diupgrade secara bersamaan. - Partisi
odm
danvendor
dapat bergantung satu sama lain, namun partisivendor
harus berfungsi tanpa partisiodm
. - ABI antara
odm
dansystem
sama dengan ABI antaravendor
dansystem
.
Interaksi langsung antara partisi product
dan vendor
atau partisi odm
tidak diperbolehkan . (Ini diberlakukan oleh SEpolicy.)
Menerapkan partisi ODM
Sebelum mengimplementasikan partisi baru, tinjau perubahan AOSP terkait .
Menyiapkan partisi ODM
Untuk mengatur partisi odm
, sertakan flag build berikut:
-
BOARD_ODMIMAGE_PARTITION_SIZE
untuk ukuran partisi tetap -
PRODUCT_USE_DYNAMIC_PARTITIONS
danBOARD_ODMIMAGE_PARTITION_RESERVED_SIZE
untuk ukuran partisi dinamis - Jenis sistem file
BOARD_ODMIMAGE_FILE_SYSTEM_TYPE
yang digunakan untuk gambar ODM -
PRODUCT_ODM_PROPERTIES
untuk/odm/build.prop
untuk digunakan dalam$(call inherit-product path/to/device.mk)
, seperti padaPRODUCT_ODM_PROPERTIES += product.abc=ok
Menginstal modul ke partisi ODM
Gunakan flag build ini untuk menginstal modul ke partisi odm
:
-
device_specific: true
diAndroid.bp
-
LOCAL_ODM_MODULE := true
diAndroid.mk
Mengaktifkan Boot Terverifikasi
Untuk mencegah perangkat lunak berbahaya merusak partisi odm
, aktifkan Android Verified Boot (AVB) untuk partisi tersebut (seperti yang Anda lakukan untuk partisi vendor
dan system
).
Untuk mengaktifkan AVB, sertakan flag build BOARD_AVB_ODM_ADD_HASHTREE_FOOTER_ARGS
. Untuk detail tentang konfigurasi AVB pada partisi dinamis, lihat Perubahan konfigurasi AVB .
Memperlakukan /odm sebagai partisi /vendor lain
Untuk memastikan bahwa sistem menangani partisi odm
sebagai partisi vendor
, gantilah referensi vendor
yang di-hardcode dengan sekumpulan partisi berorientasi perangkat keras (saat ini odm
dan vendor
). Lokasi referensi vendor
terkemuka di platform ini mencakup tautan dinamis , manajer paket , dan shell/libc
.