Android 10 menyertakan dukungan untuk membangun partisi odm menggunakan sistem build Android.
Tentang partisi ODM
Produsen desain asli (ODM) menyesuaikan paket dukungan papan vendor system-on-chip (SoC) (BSP) ke perangkat spesifik mereka (papan mereka). Ini memungkinkan mereka untuk mengimplementasikan modul kernel untuk komponen khusus papan, daemon khusus papan, atau fitur mereka sendiri pada lapisan abstraksi perangkat keras (HAL). Mereka mungkin juga ingin mengganti atau menyesuaikan komponen SoC.
Dalam rilis Android yang lebih rendah, penyesuaian tersebut mencegah penggunaan gambar vendor tunggal untuk perangkat dengan SoC yang sama (atau dengan SoC yang berbeda, tetapi dalam keluarga yang sama). Di Android 10 dan yang lebih tinggi, Anda dapat menggunakan partisi odm terpisah untuk penyesuaian, yang memungkinkan Anda menggunakan gambar vendor tunggal untuk beberapa SKU perangkat keras.
Menggunakan produk dan partisi ODM
Android 9 menambahkan dukungan untuk membangun partisi product , memungkinkan penggunaan citra sistem tunggal untuk beberapa SKU perangkat lunak yang disediakan oleh citra product.img yang berbeda. Sementara partisi product ditujukan untuk SKU perangkat lunak, partisi odm ditujukan untuk SKU perangkat keras.
Dengan produk khusus dan partisi ODM, 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 dibagikan di antara beberapa perangkat berdasarkan SoC yang diberikan.
Menggunakan partisi terpisah memiliki kelemahan, seperti kesulitan dalam mengelola ruang disk (misalnya, Anda harus memesan 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 ), 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 waktu proses (RRO) | /odm/overlay/*.apk |
| Aplikasi | /odm/app/*.apk |
| Aplikasi pribadi | /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 kustom mendukung penyalinan artefak ke dalam gambar, tetapi tidak dapat menginstal modul ke partisi tertentu dengan menentukan partisi target sebagai bagian dari aturan build.
- segera.
custom_imagestidak dapat dibuat menggunakan sistem pembangunan Soong. - pembaruan OTA. Gambar kustom digunakan sebagai gambar ROM pabrik yang tidak dapat diedit secara OTA.
Mempertahankan ABI antar partisi
Partisi odm adalah perpanjangan dari partisi vendor . Saat mempertimbangkan stabilitas antarmuka biner aplikasi (ABI), perhatikan arsitektur berikut.

- Tidak ada stabilitas ABI antara
odmdan partisivendor. Kedua partisi harus ditingkatkan secara bersamaan. - Partisi
odmdanvendordapat saling bergantung, tetapi partisivendorharus bekerja tanpa partisiodm. - ABI antara
odmdansystemsama dengan ABI antaravendordansystem.
Interaksi langsung antara partisi product dan vendor atau partisi odm tidak diperbolehkan . (Ini diberlakukan oleh SEpolicy.)
Menerapkan partisi ODM
Sebelum menerapkan partisi baru, tinjau perubahan AOSP terkait .
Menyiapkan partisi ODM
Untuk mengatur partisi odm , sertakan flag build ini:
-
BOARD_ODMIMAGE_PARTITION_SIZEuntuk ukuran partisi tetap -
PRODUCT_USE_DYNAMIC_PARTITIONSdanBOARD_ODMIMAGE_PARTITION_RESERVED_SIZEuntuk ukuran partisi dinamis -
BOARD_ODMIMAGE_FILE_SYSTEM_TYPEjenis sistem file yang digunakan untuk gambar ODM -
PRODUCT_ODM_PROPERTIESuntuk/odm/build.propuntuk digunakan dalam$(call inherit-product path/to/device.mk), seperti dalamPRODUCT_ODM_PROPERTIES += product.abc=ok
Memasang modul ke partisi ODM
Gunakan flag build ini untuk menginstal modul ke partisi odm :
-
device_specific: truediAndroid.bp -
LOCAL_ODM_MODULE := truediAndroid.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 vendor dan partisi 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 , ganti referensi vendor hard-coded dengan satu set partisi berorientasi perangkat keras (saat ini odm dan vendor ). Lokasi referensi vendor terkenal di platform termasuk dynamic linker , package manager , dan shell/libc .