Android 10, derleme desteği sunar
odm
bölümleri, Android derleme sistemini kullanarak.
ODM bölümleri hakkında
Orijinal tasarım üreticileri (ODM'ler) çip üzerinde sistem (SoC) tedarikçisini özelleştiriyor kart destek paketleri (BSP'ler) için kendi özel cihazlarına (kartları). Bu anakarta özgü bileşenler için çekirdek modüllerini uygulamalarını sağlar. ana karta özgü arka plan programları veya donanım soyutlama katmanlarındaki kendi özellikleri (HAL'ler). SoC bileşenlerini değiştirmek veya özelleştirmek de isteyebilirler.
Daha düşük Android sürümlerinde, bu tür özelleştirmeler tek bir
aynı çip üzerinde sisteme (SoC) sahip (veya farklı SoC'lere sahip ancak
(aynı aile). Android 10 ve sonraki sürümlerde
özelleştirmeler için ayrı odm
bölümü vardır. Bu, şunları yapmanıza olanak tanır:
Birden fazla donanım SKU'su için tek bir tedarikçi firma görüntüsü kullanın.
Ürün ve ODM bölümlerini kullan
Android 9, bina oluşturma desteği ekledi
product
birden fazla yazılım için tek bir sistem görüntüsünün kullanılmasını sağlar.
Farklı product.img
resimleriyle sağlanan SKU'lar. Araç
product
bölümü yazılım SKU'ları için tasarlanmıştır.
odm
bölümü, donanım SKU'ları için tasarlanmıştır.
Özel ürün ve ODM bölümleriyle şunları kullanabilirsiniz: system
birçok yazılım SKU'su arasında paylaşmak üzere genel kod barındırmak için bölüm ve
Aralarında paylaşılacak SoC'ye özel BSP kodunu barındırmak için vendor
bölümü
soC'ye göre birden fazla cihaz kullanabilir.
Ayrı bölümlerin kullanılmasının bazı dezavantajlar (ör. yönetmenin zorluğu) disk alanı (örneğin, çevrimiçi veriler için sınırlı miktarda alan ayırmalısınız) . Ancak Android 10, dinamik bölümler ortadan kaldırır ve devre dışı bırakma işlemi sırasında cihazın yeniden kablosuz güncelleme yapılabilir.
ODM bileşenleri
odm
bölümü, ODM'ye özgü şu bileşenleri içerir:
(vendor
bölümüne benzer) aşağıdaki tabloda listelenmiştir.
ODM'ye özel 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 |
SE Politikası | /odm/etc/selinux |
VINTF nesnesi veriler | /odm/etc/vintf |
init.rc
dosyalar |
/odm/etc/init |
Sistem özellikleri | /odm/build.prop |
Çalışma zamanı kaynak yer paylaşımları (RRO'lar) | /odm/overlay/*.apk |
Uygulamalar | /odm/app/*.apk |
Öncelikli 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 görüntü yok
Kullanma özel görselleri şunları desteklemez:
- Bir modülün belirli bir hedefe yüklenmesi. Özel görüntüler, yapıların resme kopyalanmasını destekler ancak hedef bölümü belirterek belirli bir bölüme bir modül yükleyin olduğunu varsayalım.
- Soong.
custom_images
, Shorts derleme sistemi. - OTA güncellemesi. Özel görüntüler şu şekilde kullanılır: OTA ile alınamayan fabrika ROM görüntüleri.
Bölümler arasında ABI'leri koruma
odm
bölümü, vendor
bölüm. Uygulama ikili arayüzü (ABI) kararlılığını değerlendirirken
şu mimariyi göz önünde bulundurun.
![Bölümler arasında ABI'yi koruma](https://source.android.com/static/docs/core/architecture/bootloader/images/build_sys_to_prod_odm_partitions.png?authuser=1&hl=tr)
Şekil 1. Bölümler arasında ABI'yi koruma.
odm
ile arasında ABI kararlılığı yokturvendor
bölüm. Her iki bölüm de aynı anda yükseltilmelidir. gerekir.odm
vevendor
bölümleri şunlara bağlı olabilir: birbirinin aynısı, ancakvendor
bölümlendirmesi çalışmalıdırodm
bölümü olmadan.odm
vesystem
arasındaki ABI ile aynıdırvendor
ilesystem
arasındaki ABI.
product
bölümü ile
vendor
veya odm
bölümü değil
izin veriliyor. (Bu, SEpolicy tarafından zorunlu kılınır.)
ODM bölümlerini uygulama
Yeni bir bölümlendirme uygulamadan önce ilgili AOSP değişiklikler başlıklı makaleyi inceleyin.
ODM bölümlerini ayarlama
odm
bölümlerini ayarlamak için şu derleme işaretlerini ekleyin:
- Sabit bölüm boyutu için
BOARD_ODMIMAGE_PARTITION_SIZE
PRODUCT_USE_DYNAMIC_PARTITIONS
ve Şunun içinBOARD_ODMIMAGE_PARTITION_RESERVED_SIZE
: dinamik bölümlendirme beden- için kullanılan
BOARD_ODMIMAGE_FILE_SYSTEM_TYPE
dosya sistemi türü ODM resmi - Şu süre boyunca
/odm/build.prop
içinPRODUCT_ODM_PROPERTIES
: gibi bir$(call inherit-product path/to/device.mk)
içinde kullanınPRODUCT_ODM_PROPERTIES += product.abc=ok
ODM bölümüne modül yükleme
odm
bölümüne modül yüklemek için şu 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ştir
Kötü amaçlı yazılımların odm
bölümlerini değiştirmesini önlemek için
Android Doğrulanmış Başlatma'yı etkinleştirin
(AVB) bu bölümler için geçerlidir (tıpkı vendor
ve
system
bölüm).
AVB'yi etkinleştirmek için derleme işaretini ekleyin
BOARD_AVB_ODM_ADD_HASHTREE_FOOTER_ARGS
Yapılandırma ayrıntıları için
Dinamik bölümlerde AVB (bkz. AVB)
AVB yapılandırması
değişiklikler başlıklı makaleyi inceleyin.
/odm öğesini başka bir /sağlayıcı bölümü olarak ele al
Sistemin odm
bölümünü bir
vendor
bölümü, sabit kodlu vendor
bölümlerini değiştirin
bir dizi donanım odaklı bölümlendirmeye sahip referanslar (şu anda
odm
ve vendor
). Önemli vendor
referans yerleri arasında şunlar yer alır:
dinamik
bağlayıcı
paket
yöneticisi ve shell/libc
.