Ürün Bölümleri

Android 9 ve üstü yapı için destek içerir product Android yapılandırma sistemi kullanarak bölümleri. Daha önce, Android 8. x SOC özgü parçaların ayrılmasını uygulanan system için bölme vendor Android inşa sistemi inşa oem özgü bileşenler için yer ithaf olmayan bölümü. Android 9 ve üstü ek sağlar izinler ve beyaz liste özellikleri değişik bölümlerde priv-uygulamalar için geçerli.

Ürün bölümleri hakkında

Birçok OEM, taşıyıcı gereksinimlerinin yanı sıra kendi özelliklerini uygulamak için AOSP sistem görüntüsünü özelleştirir. Ancak bu tür özelleştirmeler, birden çok yazılım SKU'su için tek bir sistem görüntüsünün kullanılmasını imkansız hale getirir. Farklı yerel ayarlar veya taşıyıcılar gibi özelleştirmeleri desteklemek için her görüntünün farklı olması gerekir. Ayrı kullanarak product özelleştirmeleri içerdiği bölümü mümkün birden fazla yazılım SKU'ların için tek sistem resim kullanmak mümkün kılar. ( system pek çok yazılım SKU'ların arasında paylaşılabilir bölüm barındıran jenerik kodu). vendor bölümü verilen SoC dayalı birden fazla cihaz arasında paylaşılabilir konak SoC özgü BSP koduna devam ediyor.

Ayrı bölümler kullanılarak, disk alanı (gelecekteki büyüme için ayrılmış kalmalıdır alanı sınırlı bir miktarda) yönetmek ve benzeri gibi bazı dezavantajları vardır stabil bir uygulama ikili arabirimi (ABI) muhafaza bölümleri arasında. Kullanmaya karar vermeden önce product benzersiz AOSP uygulama ve böyle bir sırasında bir cihazı repartitioning mümkün hafifletme taktikleri (dikkate almak, bölümleri zaman ayırın over-the-air (OTA) güncelleme Google tarafından yapılmazsa ancak bazı OEM'ler tarafından yapılır, ). Dinamik bölümleme bunun için iyi bir çözüm olacaktır.

Ürün bölümleri ve izinleri

Android 9 ve sonraki sürümlerde, izinlerde ve beyaz listeye alma sürecindeki bir değişiklik, "ürün" bölümlerinizde özel uygulamalara nasıl izin verdiğinizi etkiler. permissions.xml dosya priv-apps aynı bölüme bulunması gerekir. Bir yerleştirme permissions.xml dosyayı system priv-Uygulamalar için bölümünde priv-uygulamalara bu izinleri kapsamaz product eski ikincisi bir uzantısı olsa da, bölme. İzinleri ve beyaz liste süreçler hakkında ayrıntılı bilgi için bkz İmtiyazlı izin beyaz listesi .

Eski /oem ile /ürün karşılaştırması

Biz niteliklerini iki tür product bağlı bölüm ürün arayüzü icra . Ayrıca, product bölümü eski farklıdır oem bölümü:

bölme Öznitellikler
oem
  • Güncellenemez; genellikle fabrikada bir kez yanıp söner.
  • Marka ve renk gibi küçük varyasyonlara göre oluşturulmuştur. Farklı olması oem bölüm içeriğini ürün yazılımının farklı olduğu anlamına gelmez.
  • system bölümü bağlı değildir oem bölümü. (Bu kullanır oem Belirli bir dosya orada bulunan sadece bölüm).
  • Sadece kamu API kullanır system bölümü.
product
  • güncellenebilir
  • Sistem görüntüsüyle birlikte (birlikte güncellenirler)
  • Ürün veya ürün ailelerine göre oluşturulmuştur.
  • Sistem bölümü güvenebilirsiniz product bölüm.
  • Aynı anda güncellendikleri için genel olmayan API'leri kullanabilir.
product (zorunlu arayüzler)
  • güncellenebilir
  • Sistem görüntüsüyle ayrıştırıldı.
  • Ürün veya ürün ailelerine göre oluşturulmuştur.
  • system bölümü bağlı değildir product bölümü.
  • Gizli API'leri kullanmaz, ancak kamu ve sistemi API'leri kullanan tek Can system bölümü.

Bu nedenlerden dolayı, Android 9 destekler product legacy'in için destek istinat bölüm ise oem bağımlı cihazlar için bölüm. Ayrışmaya product elde bölümü system bölümü, Android 11 destekler uygulamak product arayüzleri .

/ürün bileşenleri

product bölümü aşağıdaki bileşenleri içerir:

  • Ürün özgü sistem özellikleri ( /product/build.prop )
  • Ürün özgü RROs ( /product/overlay/*.apk )
  • Ürüne özel uygulamalar ( /product/app/*.apk )
  • Ürüne özel priv-uygulamalar ( /product/priv-app/*.apk )
  • Ürüne özel kütüphaneleri ( /product/lib/* )
  • Ürüne özel java kütüphaneleri ( /product/framework/*.jar )
  • Ürüne özel Android Çerçeve sistem yapılandırmaları ( /product/etc/sysconfig/* ve /product/etc/permissions/* )
  • Ürüne özel medya dosyaları ( /product/media/audio/* )
  • Ürüne özel bootanimation dosyaları

custom_images yok

Sen kullanamazsınız custom_images . Aşağıdakiler için destekten yoksundurlar:

  • Belirli bir hedef haline modüllerinin montajı. custom_images bir görüntü içine eserler kopyalama desteği ancak bir yapı kuralının bir parçası olarak hedef bölüm belirterek, belirli bir bölümü içine bir modül yükleyemezsiniz.
  • Soong desteği. custom_images Soong yapı sistemi kullanılarak inşa edilemez.
  • OTA güncellemesi desteği. custom_images OTA güncellemeleri alabilir değil fabrika ROM görüntüler olarak kullanılmaktadır.

Bölümler arasında ABI'lerin bakımı

product Android 9'da bölüm bir uzantısıdır system bölümü. Orada arasında zayıf ABI var product ve system bölümleri, böylece ikisi de aynı anda yükseltilmesi gerekir ve ABI sistemi SDK tabanlı olmalıdır. Sistem SDK arasındaki tüm API yüzeylerini kapsamaz ise product ve system , OEM iki bölüm arasında kendi Abis sağlamalıdır.

product ve system bölümleri birbirlerine bağımlılığı olabilir. Ancak, sahip testler Jenerik sistemi görüntüsü (GSI) olmadan düzgün çalışmalıdır product bölümü.

Ne zaman product arayüzleri uygulanır, product bölümü ile ayrılmasıdır system bölümü. product bölümü sadece izin verilen arabirimleri kullanan system bölümü.

product bölümü üzerinde herhangi bir bağımlılık olmamalıdır vendor bölümü. Arasında doğrudan etkileşim product ve vendor bölümleri yasaktır. (Bu SEpolicy tarafından uygulanır.)

Ürün bölümlerinin uygulanması

Yeni bir ürün bölümü uygulamadan önce gözden AOSP ilgili ürün bölümü değişiklikleri . Sonra kurmak için product aşağıdaki tahtası veya ürüne inşa bayraklarını içerir:

  • BOARD_USES_PRODUCTIMAGE
  • BOARD_PRODUCTIMAGE_PARTITION_SIZE
  • BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE
  • PRODUCT_PRODUCT_PROPERTIES için /product/build.prop . Bunlar içinde olmalıdır $(call inherit-product path/to/device.mk) olduğu gibi PRODUCT_PRODUCT_PROPERTIES += product.abc=ok .

Ürün bölümüne bir modül yükleme

Bir modül yüklemek için aşağıdaki yapı bayraklarını kullanın product bölümü.

  • product_specific: true içinde Android.bp
  • LOCAL_PRODUCT_MODULE := true içinde Android.mk

Doğrulanmış önyüklemeyi etkinleştirme

Önlemek için product kötü niyetli yazılımlar tarafından müdahale edilmesini gelen bölümü, etkinleştirmek Android Doğrulanmış Önyükleme (AVB) o bölüm (eğer yaptığınız gibi için vendor ve system bölümleri). AvB etkinleştirmek için aşağıdaki yapı bayraklarını içerir: BOARD_AVB_PRODUCT_ADD_HASHTREE_FOOTER_ARGS .