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)|| |
|Yerel kütüphaneler|| |
|HAL'ler|| |
|SE Politikası|| |
|VINTF nesne verileri|| |


|Sistem özellikleri|| |
|Çalışma zamanı kaynak katmanları (RRO'lar)|| |
|Uygulamalar|| |
|Özel uygulamalar|| |
|Java kitaplıkları|| |
|Android Framework sistem yapılandırmaları|| |
Ö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_imagesSoong 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.
-
odmve
vendorbölümleri arasında ABI kararlılığı yoktur. Her iki bölümün de aynı anda yükseltilmesi gerekir.
-
odmve
vendorbölümleri birbirine bağlı olabilir ancak
vendorbölümünün bir
odmbölümü olmadan çalışması gerekir .
-
odmile
systemarasındaki ABI,
vendorile
systemarası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_PARTITIONSve
BOARD_ODMIMAGE_PARTITION_RESERVED_SIZE
- ODM görüntüsü için kullanılan
BOARD_ODMIMAGE_FILE_SYSTEM_TYPEdosya sistemi türü
-
$(call inherit-product path/to/device.mk)içinde kullanım için
/odm/build.propiçin
PRODUCT_ODM_PROPERTIES,
PRODUCT_ODM_PROPERTIES += product.abc=okolduğ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.bpdoğru
-
LOCAL_ODM_MODULE := true
Android.mkdoğ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.