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_images
tidak 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
odm
dan partisivendor
. Kedua partisi harus ditingkatkan secara bersamaan. - Partisi
odm
danvendor
dapat saling bergantung, tetapi partisivendor
harus bekerja 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 menerapkan partisi baru, tinjau perubahan AOSP terkait .
Menyiapkan partisi ODM
Untuk mengatur partisi odm
, sertakan flag build ini:
-
BOARD_ODMIMAGE_PARTITION_SIZE
untuk ukuran partisi tetap -
PRODUCT_USE_DYNAMIC_PARTITIONS
danBOARD_ODMIMAGE_PARTITION_RESERVED_SIZE
untuk ukuran partisi dinamis -
BOARD_ODMIMAGE_FILE_SYSTEM_TYPE
jenis sistem file 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
Memasang 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 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
.