Android 10 menyertakan dukungan untuk membuat
Partisi odm
menggunakan sistem build Android.
Tentang partisi ODM
Produsen desain asli (ODM) menyesuaikan vendor sistem di chip (SoC) paket dukungan board (BSP) ke perangkat khusus mereka (board mereka). Ini memungkinkan mereka untuk mengimplementasikan modul {i>kernel<i} untuk komponen khusus Board, {i>daemon<i} khusus board, atau fiturnya sendiri pada lapisan abstraksi hardware (HAL). Mereka mungkin juga ingin mengganti atau menyesuaikan komponen SoC.
Dalam rilis Android yang lebih rendah, penyesuaian tersebut mencegah penggunaan
gambar vendor untuk perangkat dengan SoC yang sama (atau dengan SoC yang berbeda, tetapi dengan
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 membuat
product
partisi, yang memungkinkan penggunaan satu image sistem untuk beberapa software
SKU yang disediakan oleh gambar product.img
yang berbeda. Sementara
Partisi product
ditujukan untuk SKU software,
Partisi odm
ditujukan untuk SKU hardware.
Dengan produk khusus dan partisi ODM, Anda dapat menggunakan system
partisi untuk menghosting kode generik untuk berbagi di antara banyak SKU software, dan
partisi vendor
untuk menghosting kode BSP khusus SoC untuk berbagi antar
beberapa perangkat berdasarkan SoC yang diberikan.
Menggunakan partisi terpisah memiliki kekurangan, seperti kesulitan dalam mengelola kapasitas {i>disk<i} (misalnya, Anda harus memiliki jumlah ruang yang terbatas untuk masa mendatang pertumbuhan). Namun, dukungan Android 10 untuk partisi dinamis menghilangkan masalah {i>disk<i}, dan membuat partisi ulang perangkat selama memungkinkan update over-the-air (OTA).
Komponen ODM
Partisi odm
berisi komponen khusus ODM berikut
(serupa 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 |
Kebijakan SE | /odm/etc/selinux |
Objek VINTF data | /odm/etc/vintf |
init.rc
file |
/odm/etc/init |
Properti sistem | /odm/build.prop |
Overlay resource runtime (RRO) | /odm/overlay/*.apk |
Aplikasi | /odm/app/*.apk |
Aplikasi khusus | /odm/priv-app/*.apk |
Library Java | /odm/framework/*.jar |
Konfigurasi sistem Android Framework | /odm/etc/sysconfig/* dan /odm/etc/permissions/* |
Tidak ada gambar kustom
Jangan gunakan khusus image karena tidak mendukung hal berikut:
- Penginstalan modul ke target tertentu. Gambar kustom mendukung penyalinan artefak ke dalam gambar, tetapi tidak dapat dilakukan menginstal modul ke partisi tertentu dengan menentukan partisi target sebagai bagian dari aturan build.
- Segera.
custom_images
tidak dapat dibuat menggunakan sistem build Soong. - Update OTA. Image kustom digunakan sebagai {i>factory ROM<i} yang tidak dapat di-OTA.
Mempertahankan ABI di antara partisi
Partisi odm
adalah ekstensi dari vendor
partisi. Saat mempertimbangkan stabilitas antarmuka biner aplikasi (ABI), pertahankan
arsitektur berikut ini.
![Mempertahankan ABI di antara partisi](https://source.android.com/static/docs/core/architecture/bootloader/images/build_sys_to_prod_odm_partitions.png?authuser=19&hl=id)
Gambar 1. Mempertahankan ABI antarpartisi.
- Tidak ada stabilitas ABI antara
odm
dan partisivendor
. Kedua partisi harus diupgrade secara bersamaan baik. - Partisi
odm
danvendor
dapat bergantung pada satu sama lain, 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
bukan
diizinkan. (Hal ini diberlakukan oleh SEpolicy.)
Mengimplementasikan partisi ODM
Sebelum mengimplementasikan partisi baru, tinjau AOSP terkait perubahan.
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 partisi dinamis ukuran- Jenis sistem file
BOARD_ODMIMAGE_FILE_SYSTEM_TYPE
yang digunakan untuk Gambar ODM PRODUCT_ODM_PROPERTIES
untuk/odm/build.prop
untuk gunakan 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
Aktifkan Booting Terverifikasi
Untuk mencegah software berbahaya mengutak-atik partisi odm
,
aktifkan Booting Terverifikasi Android
(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
mengkonfigurasi
AVB pada partisi dinamis, lihat
Konfigurasi AVB
perubahan.
Perlakukan /odm sebagai partisi /vendor lain
Untuk memastikan bahwa sistem menangani partisi odm
sebagai
partisi vendor
, ganti vendor
yang di-hard code
referensi dengan serangkaian partisi berorientasi
perangkat keras (saat ini
odm
dan vendor
). vendor
terkenal
lokasi referensi di platform mencakup
dinamis
penaut,
paket
pengelola, dan shell/libc
.