Android 10 menyertakan dukungan untuk mem-build
partisi odm
menggunakan sistem build Android.
Tentang partisi ODM
Produsen desain asli (ODM) menyesuaikan paket dukungan papan (BSP) vendor sistem-di-chip (SoC) ke perangkat tertentu (papan mereka). Hal ini memungkinkan mereka menerapkan modul kernel untuk komponen khusus board, daemon khusus board, atau fitur mereka sendiri di hardware abstraction layer (HAL). Mereka mungkin juga ingin mengganti atau menyesuaikan komponen SoC.
Dalam rilis Android yang lebih rendah, penyesuaian tersebut mencegah penggunaan satu
image vendor untuk perangkat dengan SoC yang sama (atau dengan SoC yang berbeda, tetapi dalam
keluarga yang sama). Di Android 10 dan yang lebih baru, Anda dapat menggunakan
partisi odm
terpisah untuk penyesuaian, yang memungkinkan Anda
menggunakan satu image vendor untuk beberapa SKU hardware.
Menggunakan partisi produk dan ODM
Android 9 menambahkan dukungan untuk mem-build
partisi
product
, yang memungkinkan penggunaan satu image sistem untuk beberapa SKU
software yang disediakan oleh image product.img
yang berbeda. Meskipun
partisi product
ditujukan untuk SKU software, partisi odm
ditujukan untuk SKU hardware.
Dengan partisi produk dan ODM khusus, Anda dapat menggunakan partisi system
untuk menghosting kode generik guna dibagikan di antara banyak SKU software, dan
partisi vendor
untuk menghosting kode BSP khusus SoC guna dibagikan di antara
beberapa perangkat berdasarkan SoC tertentu.
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 akan menghapus masalah disk, dan memungkinkan pembagian ulang perangkat selama update 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 |
Library native | /odm/lib[64] |
HAL | /odm/lib[64]/hw |
SEPolicy | /odm/etc/selinux |
Data objek VINTF | /odm/etc/vintf |
File
init.rc |
/odm/etc/init |
Properti sistem | /odm/build.prop |
Overlay resource runtime (RRO) | /odm/overlay/*.apk |
Aplikasi | /odm/app/*.apk |
Priv-apps | /odm/priv-app/*.apk |
Library Java | /odm/framework/*.jar |
Konfigurasi sistem Framework Android | /odm/etc/sysconfig/* dan /odm/etc/permissions/* |
Tidak ada gambar kustom
Jangan gunakan image kustom karena tidak memiliki dukungan untuk hal berikut:
- Penginstalan 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.
- Soong.
custom_images
tidak dapat di-build menggunakan sistem build Soong. - Update OTA. Gambar kustom digunakan sebagai gambar ROM pabrik yang tidak dapat di-OTA.
Mempertahankan ABI di antara partisi
Partisi odm
adalah ekstensi dari partisi
vendor
. Saat mempertimbangkan stabilitas antarmuka biner aplikasi (ABI), ingat
arsitektur berikut.

Gambar 1. Mempertahankan ABI di antara partisi.
- Tidak ada stabilitas ABI antara partisi
odm
danvendor
. Kedua partisi harus diupgrade secara bersamaan. - Partisi
odm
danvendor
dapat saling bergantung, tetapi partisivendor
harus berfungsi tanpa partisiodm
. - ABI antara
odm
dansystem
sama dengan ABI antaravendor
dansystem
.
Interaksi langsung antara partisi product
dan
partisi vendor
atau odm
tidak
diizinkan. (Hal ini diterapkan oleh SEpolicy.)
Menerapkan partisi ODM
Sebelum menerapkan partisi baru, tinjau perubahan AOSP terkait.
Menyiapkan partisi ODM
Untuk menyiapkan partisi odm
, sertakan flag build berikut:
BOARD_ODMIMAGE_PARTITION_SIZE
untuk ukuran partisi tetapPRODUCT_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 dalamPRODUCT_ODM_PROPERTIES += product.abc=ok
Menginstal modul ke partisi ODM
Gunakan flag build ini untuk menginstal modul ke partisi odm
:
device_specific: true
dalamAndroid.bp
LOCAL_ODM_MODULE := true
dalamAndroid.mk
Mengaktifkan Booting Terverifikasi
Untuk mencegah software berbahaya mengubah 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 mengetahui detail tentang cara mengonfigurasi
AVB pada partisi dinamis, lihat
perubahan
konfigurasi AVB.
Memperlakukan /odm sebagai partisi /vendor lain
Untuk memastikan sistem menangani partisi odm
sebagai
partisi vendor
, ganti referensi vendor
hard code dengan kumpulan partisi berorientasi hardware (saat ini
odm
dan vendor
). Lokasi referensi
vendor
yang penting di platform mencakup
penaut
dinamis,
pengelola
paket, dan shell/libc
.