Android 10, Android derleme sistemini kullanarak odm
bölümleri oluşturmaya yönelik destek içerir.
ODM bölümleri hakkında
Orijinal tasarım üreticileri (ODM'ler), çip üzerinde sistem (SoC) satıcı anakart destek paketlerini (BSP'ler) kendi cihazlarına (anakartlarına) göre özelleştirir. Bu, karta özgü bileşenler, karta özgü arka plan programları veya donanım soyutlama katmanları (HAL'ler) üzerindeki kendi özellikleri için çekirdek modüllerini uygulamalarını sağlar. Ayrıca SoC bileşenlerini değiştirmek veya özelleştirmek isteyebilirler.
Daha düşük Android sürümlerinde, bu tür özelleştirmeler, aynı SoC'ye (veya farklı SoC'lere sahip ancak aynı aileden) sahip cihazlar için tek bir satıcı görüntüsünün kullanılmasını engelliyordu. Android 10 ve üzeri sürümlerde, özelleştirmeler için ayrı bir odm
bölümü kullanabilirsiniz; bu, birden çok donanım SKU'su için tek bir satıcı görüntüsünü kullanmanıza olanak tanır.
Ürün ve ODM bölümlerini kullanma
Android 9, farklı product.img
görüntüleri tarafından sağlanan birden fazla yazılım SKU'su için tek bir sistem görüntüsünün kullanılmasına olanak tanıyan product
bölümleri oluşturmaya yönelik destek ekledi. product
bölümü yazılım SKU'larına yönelikken, odm
bölümü donanım SKU'larına yöneliktir.
Özel ürün ve ODM bölümleriyle, birçok yazılım SKU'su arasında paylaşıma yönelik genel kodu barındırmak için system
bölümünü ve verilen SoC'ye dayalı olarak birden fazla cihaz arasında paylaşmak üzere SoC'ye özgü BSP kodunu barındırmak için vendor
bölümünü kullanabilirsiniz.
Ayrı bölümleri kullanmanın, disk alanını yönetme zorluğu gibi dezavantajları vardır (örneğin, gelecekteki büyüme için sınırlı miktarda alan ayırmanız gerekir). Ancak dinamik bölümlere yönelik Android 10 desteği, disk sorununu ortadan kaldırır ve kablosuz (OTA) güncelleme sırasında bir 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 özgü aşağıdaki 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 kütüphaneler | /odm/lib[64] |
HAL'ler | /odm/lib[64]/hw |
SE Politikası | /odm/etc/selinux |
VINTF nesne verileri | /odm/etc/vintf |
init.rc dosyaları | /odm/etc/init |
Sistem özellikleri | /odm/build.prop |
Çalışma zamanı kaynak katmanları (RRO'lar) | /odm/overlay/*.apk |
Uygulamalar | /odm/app/*.apk |
Özel uygulamalar | /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 destekleri bulunmadığından özel görseller kullanmayın:
- Bir modülün belirli bir hedefe kurulması. Özel görüntüler, yapıtların bir görüntüye kopyalanmasını destekler, ancak hedef bölümü bir derleme kuralının parçası olarak belirterek belirli bir bölüme modül yükleyemez.
- Soong.
custom_images
Soong derleme sistemi kullanılarak oluşturulamaz. - OTA güncellemesi. Özel görüntüler, OTA düzenlenemeyen fabrika ROM görüntüleri 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 aklınızda bulundurun.

-
odm
vevendor
bölümleri arasında ABI kararlılığı yoktur. Her iki bölümün de aynı anda yükseltilmesi gerekir. -
odm
vevendor
bölümleri birbirine bağlı olabilir ancakvendor
bölümünün birodm
bölümü olmadan çalışması gerekir . -
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 uygulanır.)
ODM bölümlerini uygulama
Yeni bir bölüm uygulamadan önce ilgili AOSP değişikliklerini gözden geçirin.
ODM bölümlerini ayarlama
odm
bölümlerini ayarlamak için şu derleme bayraklarını 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 görüntüsü için kullanılan
BOARD_ODMIMAGE_FILE_SYSTEM_TYPE
dosya sistemi türü -
$(call inherit-product path/to/device.mk)
içinde kullanım için/odm/build.prop
içinPRODUCT_ODM_PROPERTIES
,PRODUCT_ODM_PROPERTIES += product.abc=ok
olduğu gibi
Bir ODM bölümüne modül yükleme
Bir odm
bölümüne modül yüklemek için bu derleme bayraklarını kullanın:
-
device_specific: true
Android.bp
doğru -
LOCAL_ODM_MODULE := true
Android.mk
doğru
Doğrulanmış Önyüklemeyi Etkinleştirme
Kötü amaçlı yazılımların odm
bölümlerine müdahale etmesini önlemek amacıyla, bu bölümler için Android Verified Boot'u (AVB) etkinleştirin (tıpkı vendor
ve system
bölümlerinde yaptığınız gibi).
AVB'yi etkinleştirmek için BOARD_AVB_ODM_ADD_HASHTREE_FOOTER_ARGS
yapı bayrağını ekleyin. AVB'yi dinamik bölümlerde yapılandırmaya ilişkin ayrıntılar için bkz. AVB yapılandırma değişiklikleri .
/odm'yi başka bir /vendor bölümü gibi ele almak
Sistemin odm
bölümünü bir vendor
bölümü olarak işlemesini sağlamak için, sabit kodlu vendor
referanslarını bir dizi donanım odaklı bölümle (şu anda odm
ve vendor
) değiştirin. Platformdaki dikkate değer vendor
referans konumları arasında dinamik bağlayıcı , paket yöneticisi ve shell/libc
yer alır.