Android 9 dan yang lebih tinggi menyertakan dukungan untuk membuat partisi product
menggunakan sistem pembangunan Android. Sebelumnya, Android 8.x memberlakukan pemisahan komponen khusus SoC dari partisi system
ke partisi vendor
tanpa mendedikasikan ruang untuk komponen khusus OEM yang dibuat dari sistem pembangunan Android. Android 9 dan yang lebih tinggi memberikan izin tambahan dan fitur daftar putih yang berlaku untuk aplikasi pribadi di partisi yang berbeda.
Tentang partisi produk
Banyak OEM menyesuaikan citra sistem AOSP untuk mengimplementasikan fitur mereka sendiri, serta persyaratan operator. Namun, penyesuaian semacam itu tidak memungkinkan untuk menggunakan citra sistem tunggal untuk beberapa SKU perangkat lunak. Setiap gambar harus berbeda untuk mendukung penyesuaian, seperti dengan lokal atau operator yang berbeda. Menggunakan partisi product
terpisah untuk memuat kustomisasi memungkinkan penggunaan citra sistem tunggal untuk beberapa SKU perangkat lunak. (Partisi system
menghosting kode generik yang dapat dibagikan di antara banyak SKU perangkat lunak). Partisi vendor
terus meng-host kode BSP khusus SoC yang dapat dibagikan di antara beberapa perangkat berdasarkan SoC yang diberikan.
Menggunakan partisi terpisah memiliki beberapa kelemahan, seperti mengelola ruang disk (ruang terbatas harus tetap disediakan untuk pertumbuhan di masa mendatang) dan memelihara antarmuka biner aplikasi (ABI) yang stabil antar partisi. Sebelum memutuskan untuk menggunakan partisi product
, luangkan waktu untuk mempertimbangkan penerapan AOSP unik Anda dan kemungkinan taktik mitigasi (seperti mempartisi ulang perangkat selama pembaruan over-the-air (OTA) , yang tidak dilakukan oleh Google tetapi dilakukan oleh beberapa OEM ). Partisi dinamis akan menjadi solusi yang baik untuk ini.
Partisi dan izin produk
Di Android 9 dan yang lebih tinggi, perubahan dalam proses izin dan daftar putih memengaruhi cara Anda memberikan izin aplikasi pribadi pada partisi `produk` Anda. File permissions.xml
harus berada di partisi yang sama dengan priv-apps. Menempatkan file permissions.xml
di partisi system
untuk priv-apps tidak memperluas izin tersebut ke priv-apps di partisi product
, meskipun yang pertama adalah perpanjangan dari yang terakhir. Untuk detail tentang izin dan proses daftar putih, lihat Daftar Putih Izin Istimewa .
Warisan /oem vs /produk
Kami memiliki dua jenis atribut dari partisi product
tergantung pada penerapan antarmuka produk . Juga, partisi product
berbeda dari partisi oem
lawas:
partisi | Atribut |
---|---|
oem |
|
product |
|
product (antarmuka yang diterapkan) |
|
Karena alasan ini, Android 9 mendukung partisi product
sambil mempertahankan dukungan untuk partisi oem
lawas, untuk perangkat yang bergantung padanya. Untuk memisahkan partisi product
dari partisi system
, Android 11 mendukung penerapan antarmuka product
.
/komponen produk
Partisi product
berisi komponen berikut:
- Properti sistem khusus produk (
/product/build.prop
) - RRO khusus produk (
/product/overlay/*.apk
) - Aplikasi khusus produk (
/product/app/*.apk
) - Aplikasi pribadi khusus produk (
/product/priv-app/*.apk
) - Pustaka khusus produk (
/product/lib/*
) - Pustaka java khusus produk (
/product/framework/*.jar
) - Konfigurasi sistem Kerangka Android khusus produk (
/product/etc/sysconfig/*
dan/product/etc/permissions/*
) - File media khusus produk (
/product/media/audio/*
) - File
bootanimation
khusus produk
Tidak ada custom_images
Anda tidak dapat menggunakan custom_images
. Mereka tidak memiliki dukungan untuk hal-hal berikut:
- Memasang modul ke target tertentu .
custom_images
mendukung penyalinan artefak ke dalam gambar tetapi tidak dapat menginstal modul ke partisi tertentu dengan menentukan partisi targetnya sebagai bagian dari aturan build. - Dukungan segera .
custom_images
tidak dapat dibuat menggunakan sistem pembangunan Soong. - Dukungan pembaruan OTA .
custom_images
digunakan sebagai gambar ROM pabrik yang tidak dapat menerima pembaruan OTA.
Mempertahankan ABI antar partisi
Partisi product
di Android 9 adalah perpanjangan dari partisi system
. Ada ABI yang lemah antara product
dan partisi system
, jadi keduanya harus ditingkatkan secara bersamaan, dan ABI harus berbasis SDK sistem. Jika SDK sistem tidak mencakup semua permukaan API antara product
dan system
, OEM harus mempertahankan ABI mereka sendiri di antara kedua partisi.
Partisi product
dan system
dapat memiliki ketergantungan satu sama lain. Namun, pengujian dengan Generic System Image (GSI) harus berfungsi dengan baik tanpa partisi product
.
Ketika antarmuka product
diterapkan, partisi product
dipisahkan dengan partisi system
. Partisi product
hanya menggunakan antarmuka yang diizinkan dari partisi system
.
Partisi product
tidak boleh memiliki ketergantungan pada partisi vendor
. Interaksi langsung antara product
dan partisi vendor
dilarang. (Ini diberlakukan oleh SEpolicy.)
Menerapkan partisi produk
Sebelum menerapkan partisi produk baru, tinjau perubahan partisi produk terkait di AOSP . Kemudian, untuk menyiapkan product
, sertakan papan atau flag build produk berikut:
-
BOARD_USES_PRODUCTIMAGE
-
BOARD_PRODUCTIMAGE_PARTITION_SIZE
-
BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE
-
PRODUCT_PRODUCT_PROPERTIES
untuk/product/build.prop
. Ini harus berada dalam$(call inherit-product path/to/device.mk)
, seperti dalamPRODUCT_PRODUCT_PROPERTIES += product.abc=ok
.
Memasang modul ke partisi produk
Gunakan flag build berikut untuk menginstal modul ke partisi product
.
-
product_specific: true
diAndroid.bp
-
LOCAL_PRODUCT_MODULE := true
diAndroid.mk
Mengaktifkan boot terverifikasi
Untuk mencegah partisi product
dirusak oleh perangkat lunak berbahaya, aktifkan Android Verified Boot (AVB) untuk partisi tersebut (seperti yang Anda lakukan untuk vendor
dan partisi system
). Untuk mengaktifkan AVB, sertakan flag build berikut: BOARD_AVB_PRODUCT_ADD_HASHTREE_FOOTER_ARGS
.