Android 10, Android derleme sistemini kullanarak odm
bölüm oluşturma desteği içerir.
ODM bölümleri hakkında
Orijinal tasarım üreticileri (ODM'ler), çip üzerinde sistem (SoC) tedarikçisi kart destek paketlerini (BSP'ler) kendi cihazlarına (kartlarına) göre özelleştirir. Bu sayede, kartlara özgü bileşenler, kartlara özgü daemon'lar veya donanım soyutlama katmanlarında (HAL'ler) kendi özelliklerini uygulayabilirler. Ayrıca SoC bileşenlerini değiştirmek veya özelleştirmek isteyebilirler.
Android'in eski sürümlerinde bu tür özelleştirmeler, aynı SoC'ye (veya aynı ailedeki farklı SoC'lere) sahip cihazlar için tek bir tedarikçi firma resminin kullanılmasını engelliyordu. Android 10 ve sonraki sürümlerde, özelleştirmeler için ayrı bir odm
bölümü kullanabilirsiniz. Bu bölüm, birden fazla donanım SKU'su için tek bir tedarikçi görüntüsü kullanmanıza olanak tanır.
Ürün ve ODM bölümlerini kullanma
Android 9, product
bölümlerinin oluşturulmasına yönelik destek ekleyerek farklı product.img
resimleri tarafından sağlanan birden fazla yazılım SKU'su için tek bir sistem resminin kullanılmasını sağladı. product
bölümü yazılım SKU'ları için, odm
bölümü ise donanım SKU'ları için tasarlanmıştır.
Özel ürün ve ODM bölümleriyle, birçok yazılım SKU'su arasında paylaşılacak genel kodu barındırmak için system
bölümünü ve belirli bir SoC'ye göre birden fazla cihaz arasında paylaşılacak SoC'ye özel BSP kodunu barındırmak için vendor
bölümünü kullanabilirsiniz.
Ayrı bölümler kullanmanın dezavantajları vardır. Örneğin, disk alanını yönetmenin zor olması (örneğin, gelecekteki büyüme için sınırlı miktarda alan ayırmanız gerekir) bu dezavantajlardan biridir. Ancak Android 10'un dinamik bölümler desteği, disk sorununu ortadan kaldırır ve kablosuz (OTA) güncelleme sırasında cihazın yeniden bölümlendirilmesini mümkün kılar.
ODM bileşenleri
odm
bölümü, aşağıdaki tabloda listelenen ODM'ye özel bileşenleri (vendor
bölümüne benzer) içerir.
ODM'ye özgü bileşen | Konum |
---|---|
Yüklenebilir çekirdek modülleri (LKM'ler) | /odm/lib/modules/*.ko |
Yerel kitaplık | /odm/lib[64] |
HAL'ler | /odm/lib[64]/hw |
SEPolicy | /odm/etc/selinux |
VINTF nesnesi verileri | /odm/etc/vintf |
init.rc
dosyaları |
/odm/etc/init |
Sistem özellikleri | /odm/build.prop |
Çalışma zamanında kaynak yer paylaşımları (RRO'lar) | /odm/overlay/*.apk |
Uygulamalar | /odm/app/*.apk |
Priv-apps | /odm/priv-app/*.apk |
Java kitaplıkları | /odm/framework/*.jar |
Android Framework sistem yapılandırmaları | /odm/etc/sysconfig/* ve /odm/etc/permissions/* |
Özel resim yok
Aşağıdakiler için destek olmadığından özel resimler kullanmayın:
- Belirli bir hedefe modül yükleme. Özel görüntüler, yapı öğelerinin bir görüntüye kopyalanmasını destekler ancak bir yapı kuralının parçası olarak hedef bölümü belirterek belirli bir bölüme modül yükleyemez.
- Soong.
custom_images
, Soong derleme sistemi kullanılarak oluşturulamaz. - OTA güncellemesi. Özel resimler, OTA ile yüklenemeyen fabrika ROM resimleri olarak kullanılır.
Bölümler arasında ABI'leri koruma
odm
bölümü, vendor
bölümünün bir uzantısıdır. Uygulama ikili arayüzü (ABI) kararlılığını değerlendirirken aşağıdaki mimariyi göz önünde bulundurun.

Şekil 1. Bölümler arasında ABI'yi koruma
odm
ilevendor
bölümleri arasında ABI kararlılığı yoktur. Her iki bölüm de aynı anda yükseltilmelidir.odm
vevendor
bölümleri birbirine bağlı olabilir ancakvendor
bölümüodm
bölümü olmadan çalışmalıdır.odm
ilesystem
arasındaki ABI,vendor
ilesystem
arasındaki ABI ile aynıdır.
product
bölümü ile vendor
veya odm
bölümü arasında doğrudan etkileşime izin verilmez. (Bu, SEpolicy tarafından zorunlu kılınmıştır.)
ODM bölümlerini uygulama
Yeni bir bölüm uygulamadan önce ilgili AOSP değişikliklerini inceleyin.
ODM bölümlendirmelerini ayarlama
odm
bölümleri oluşturmak için aşağıdaki derleme işaretlerini ekleyin:
- Sabit bölüm boyutu için
BOARD_ODMIMAGE_PARTITION_SIZE
- Dinamik bölüm boyutu için
PRODUCT_USE_DYNAMIC_PARTITIONS
veBOARD_ODMIMAGE_PARTITION_RESERVED_SIZE
- ODM resmi için kullanılan
BOARD_ODMIMAGE_FILE_SYSTEM_TYPE
dosya sistemi türü PRODUCT_ODM_PROPERTIES += product.abc=ok
'da olduğu gibi,$(call inherit-product path/to/device.mk)
içinde kullanmak için/odm/build.prop
içinPRODUCT_ODM_PROPERTIES
ODM bölümüne modül yükleme
Bir modülü odm
bölümüne yüklemek için aşağıdaki derleme işaretlerini kullanın:
device_specific: true
Android.bp
içinde başlıyorLOCAL_ODM_MODULE := true
Android.mk
içinde başlıyor
Doğrulanmış Başlatma'yı etkinleştirme
Kötü amaçlı yazılımların odm
bölümlerinde değişiklik yapmasını önlemek için bu bölümlerde Android Doğrulanmış Başlatma (AVB)'yı etkinleştirin (vendor
ve system
bölümleri için yaptığınız gibi).
AVB'yi etkinleştirmek için BOARD_AVB_ODM_ADD_HASHTREE_FOOTER_ARGS
derleme işaretini ekleyin. Dinamik bölümlerde AVB'yi yapılandırmayla ilgili ayrıntılar için AVB yapılandırma değişiklikleri başlıklı makaleyi inceleyin.
/odm'yi başka bir /vendor bölümü olarak ele alma
Sistemin odm
bölümünü vendor
bölümü olarak işlemesini sağlamak için sabit kodlanmış vendor
referanslarını donanıma yönelik bir bölüm kümesiyle (şu anda odm
ve vendor
) değiştirin. Platformdaki önemli vendor
referans konumları arasında dinamik bağlayıcı, paket yöneticisi ve shell/libc
yer alır.