Ürün Bölümleri

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

Android 9 ve sonraki sürümler, Android derleme sistemini kullanarak product bölümleri oluşturma desteği içerir. Daha önce Android 8.x, Android yapı sisteminden oluşturulan OEM'e özel bileşenler için alan ayırmadan SoC'ye özgü bileşenlerin system bölümünden vendor bölümüne ayrılmasını zorunlu kılardı. Android 9 ve sonraki sürümler, farklı bölümlerdeki özel uygulamalar için geçerli olan ek izinler ve beyaz listeye alma özellikleri sağlar.

Ü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. Özelleştirmeleri içermek için ayrı bir product bölümünün kullanılması, birden çok yazılım SKU'su için tek bir sistem görüntüsünün kullanılmasını mümkün kılar. ( system bölümü, birçok yazılım SKU'su arasında paylaşılabilen genel kodu barındırır). vendor bölümü, verilen SoC'ye dayalı olarak birden fazla cihaz arasında paylaşılabilen SoC'ye özgü BSP kodunu barındırmaya devam eder.

Ayrı bölümlerin kullanılması, disk alanını yönetmek (gelecekteki büyüme için sınırlı miktarda alan ayrılmalıdır) ve bölümler arasında kararlı bir uygulama ikili arabirimi (ABI) sağlamak gibi bazı dezavantajlara sahiptir. product bölümlerini kullanmaya karar vermeden önce, benzersiz AOSP uygulamanızı ve olası azaltma taktiklerini (örneğin, Google tarafından yapılmayan ancak bazı OEM'ler tarafından yapılan kablosuz (OTA) güncellemesi sırasında bir cihazı yeniden bölümlendirme gibi) düşünmek için zaman ayırın. ). 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, izinler ve beyaz listeye alma sürecindeki bir değişiklik, "ürün" bölümlerinizde özel uygulamalar izinlerini nasıl verdiğinizi etkiler. permissions.xml dosyası, özel uygulamalarla aynı bölümde bulunmalıdır. Özel uygulamalar için system bölümüne bir permissions.xml dosyası yerleştirmek, bu izinleri, birincisi ikincisinin bir uzantısı olsa da, product bölümündeki özel uygulamalara genişletmez. İzinler ve beyaz listeye alma süreçleriyle ilgili ayrıntılar için bkz. Ayrıcalıklı İzin Beyaz Listeye Alma .

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

Ürün arabirimi uygulamasına bağlı olarak product bölümünün iki tür özniteliğine sahibiz. Ayrıca, product bölümü eski oem bölümünden farklıdır:

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ı oem bölüm içeriğine sahip olmak, ürün yazılımının farklı olduğu anlamına gelmez.
  • system bölümü, oem bölümüne bağlı değildir. ( oem bölümünü yalnızca orada belirli bir dosya bulunduğunda kullanır).
  • system bölümünde yalnızca genel API kullanır.
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ü, product bölümüne bağlı olabilir.
  • 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ü, product bölümüne bağlı değildir.
  • Gizli API'ler kullanılamaz, ancak system bölümünde yalnızca genel ve sistem API'lerini kullanır.

Bu nedenlerle, Android 9 product bölümünü desteklerken, ona bağlı olan cihazlar için eski oem bölümü desteğini korur. product bölümünü system bölümünden ayırmak için Android 11, product arabirimlerinin uygulanmasını destekler.

/ürün bileşenleri

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

  • Ürüne özel sistem özellikleri ( /product/build.prop )
  • Ürüne özel RRO'lar ( /product/overlay/*.apk )
  • Ürüne özel uygulamalar ( /product/app/*.apk )
  • Ürüne özel özel uygulamalar ( /product/priv-app/*.apk )
  • Ürüne özel kitaplıklar ( /product/lib/* )
  • Ürüne özel Java kitaplıkları ( /product/framework/*.jar )
  • Ürüne özel Android Framework 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

custom_images . Aşağıdakiler için destekten yoksundurlar:

  • Modülleri belirli bir hedefe kurmak . custom_images , yapıtları bir görüntüye kopyalamayı destekler, ancak hedef bölümünü bir yapı kuralının parçası olarak belirterek belirli bir bölüme modül yükleyemez.
  • Yakında destek . custom_images , Soong derleme sistemi kullanılarak oluşturulamaz.
  • OTA güncelleme desteği . custom_images , OTA güncellemelerini alamayan fabrika ROM görüntüleri olarak kullanılır.

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

Android 9'daki product bölümü, system bölümünün bir uzantısıdır. product ve system bölümleri arasında zayıf bir ABI vardır, bu nedenle her ikisi de aynı anda yükseltilmelidir ve ABI, sistem SDK'sı tabanlı olmalıdır. Sistem SDK'sı, product ve system arasındaki tüm API yüzeylerini kapsamıyorsa, OEM'lerin iki bölüm arasında kendi ABI'larını tutması gerekir.

product ve system bölümleri birbirine bağımlı olabilir. Ancak, Genel Sistem Görüntüsü (GSI) ile yapılan testler, product bölümü olmadan düzgün şekilde çalışmalıdır.

product arabirimleri zorunlu kılındığında, product bölümü system bölümü ile ayrıştırılır. product bölümü, yalnızca system bölümünden izin verilen arabirimleri kullanır.

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

Ürün bölümlerinin uygulanması

Yeni bir ürün bölümü uygulamadan önce , AOSP'deki ilgili ürün bölümü değişikliklerini gözden geçirin. Ardından, product kurmak için aşağıdaki panoyu veya ürün oluşturma işaretlerini ekleyin:

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

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

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

  • product_specific: true Android.bp doğru
  • LOCAL_PRODUCT_MODULE := true Android.mk doğru

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

product bölümünün kötü amaçlı yazılımlar tarafından kurcalanmasını önlemek için, o bölüm için Android Verified Boot'u (AVB) etkinleştirin (tıpkı vendor ve system bölümleri için yaptığınız gibi). AVB'yi etkinleştirmek için aşağıdaki yapı işaretlerini ekleyin: BOARD_AVB_PRODUCT_ADD_HASHTREE_FOOTER_ARGS .