Ürün bölümleri

Android 9 ve sonraki sürümler, product bölümleri, Android derleme sistemini kullanarak. Daha önce Android 8.x, SoC'ye özel bileşenlerin ayrılmasını zorunlu kıldı system bölümünden vendor bölümüne Google Analytics 4'te oluşturulan OEM'e özgü bileşenler için Android derleme sistemi. Android 9 ve sonraki sürümler izinler ve farklı bölümlerdeki öncelik uygulamaları için geçerli olan özellikleri beyaz listeye ekleme hakkında daha fazla bilgi edinin.

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

Birçok OEM, AOSP sistem imajını kendi özelliklerini, ve kargo şirketi gereksinimlerini takip edin. Ancak bu tür özelleştirmeler, birden fazla yazılım SKU'su için tek bir sistem görüntüsü kullanmak imkansızdır. Her biri resim, özelleştirmeleri desteklemek için farklı olmalıdır; veya operatörlerden yardım alabilirsiniz. Bir özelleştirmeleri içerecek şekilde ayrı product bölümü, bunu birden fazla yazılım SKU'su için tek bir sistem görüntüsü kullanılabilir. ( system bölümü, aralarında paylaşılabilecek genel kodları barındırır çok sayıda yazılım SKU'su). vendor bölümü, barındırmaya devam eder Birden fazla kullanıcı arasında paylaşılabilen SoC'ye özel BSP kodu çiplerini kullanabilirsiniz.

Ayrı bölümlerin kullanılmasının bazı dezavantajları vardır: yönetme (ilerideki depolama alanı için sınırlı bir alan ayrılmalı büyüme) ve bunları , bölümler arasında kararlı bir uygulama ikili arayüzü (ABI) Şu tarihten önce: kullanmaya karar veriyorsanız product bölümlerinizi benzersiz AOSP uygulaması ve olası azaltma taktikleri (ör. kablosuz bağlantıdayken bir cihazı yeniden bölümlendirme (OTA) güncellemesi Google tarafından yapılmaz ancak bazı OEM'ler tarafından yapılır. Dinamik bölümlendirme iyi bir çözüm olabilir.

Ürün bölümleri ve izinler

Android 9 ve sonraki sürümlerde izinlerde değişiklik beyaz listeye ekleme işlemi, "ürün" bölümlerinizi de kullanabilirsiniz. permissions.xml dosyası priv-apps ile aynı bölümde bulunmalıdır. Giriş system bölümünde permissions.xml dosyası for priv-apps, bu izinleri product içindeki priv-uygulamalara genişletmez ilki, ikincisinin bir uzantısıdır. İzinler ve beyaz listeye ekleme süreçleriyle ilgili ayrıntılar için bkz. Özel İzinleri İzin Verilenler Listesine Ekleme.

Eski /oem ve /product karşılaştırması

product bölümünün iki tür özelliği vardır: ürünün ürünündeki arayüz yaptırımı. Ayrıca, product bölümü farklıdır (eski oem bölümünden daha yüksek):

Bölüm Özellikler
oem
  • Güncellenemez; genellikle fabrikada bir kez yanıp söndü.
  • Marka ve renk gibi küçük farklılıklara göre oluşturulur. Sahiplenme farklı oem bölümü içerikleri, ürünün farklı olması gerekir.
  • system bölümü şunlara bağlı değildir: oem bölümlendirmesi. (oem kullanıyor yalnızca belirli bir dosya bulunduğunda).
  • Yalnızca system bölümünde herkese açık API'yi kullanır.
product
  • Güncellenebilir
  • Sistem görüntüsüyle birleştirilir (birlikte güncellenir)
  • Ürün veya ürün ailelerine göre oluşturulur.
  • Sistem bölümü, product bölümüne bağlı olabilir.
  • Eş zamanlı olarak güncellendiğinden herkese açık olmayan API'leri kullanabilir.
product (zorunlu arayüzler)
  • Güncellenebilir
  • Sistem görüntüsüyle ayrılır.
  • Ürün veya ürün ailelerine göre oluşturulur.
  • system bölümü product değerine bağlı değildir bölüm.
  • Gizli API'ler kullanılamaz, ancak sadece system bölümü.

Bu nedenlerden ötürü, Android 9, product bölümünü destekler. Şuna bağımlı cihazlar için eski oem bölümünü desteklemeye devam ediyoruz: somut olarak ortaya koyar. product bölümünü system öğesinden ayırmak için bölüm, Android 11 destekler product yaptırımı arayüzleri.

/ü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 DGR'ler (/product/overlay/*.apk)
  • Ürüne özel uygulamalar (/product/app/*.apk)
  • Ürüne özel öncelik 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 uygulamasını kullanamazsınız. Şu konuda yeterince destek sağlamıyorlar: takip etmek için:

  • Modülleri belirli bir hedefe yükleme. custom_images, yapıların resme kopyalanmasını destekler ancak bir modül, hedefini belirterek belirli bir bölüme yüklenemez bölümlendirmeyi devre dışı bırakır.
  • Soong desteği. custom_images olamaz geliştirildi.
  • OTA güncelleme desteği. custom_images, fabrika ROM'u olarak kullanılır OTA güncellemelerini alamayan resimler var.

Bölümler arasında ABI'leri koruma

Android 9'daki product bölümü, system bölüm. Her iki iş arasında da product ve system bölümleri olduğundan her ikisi de olmalıdır aynı anda yeni sürüme geçirilmeli ve ABI sistem SDK'sı tabanlı olmalıdır. Öğe sistem SDK'sı product ile arasındaki tüm API yüzeylerini kapsamaz system, OEM'ler şu tarihler arasında kendi ABI'lerini tutmalıdır: ayırdığımızı unutmayın.

product ve system bölümlerinde ortaya çıkarmanıza yardımcı olabilir. Ancak, Genel Sistem Görüntüsü (GSI) product bölümü olmadan düzgün bir şekilde çalışmalıdır.

product arayüzleri 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ündeki izin verilen arayüzleri kullanır.

product bölümünün, vendor bölüm. product ve vendor bölümleri yasaklandı. (Bu, SEpolicy tarafından zorunlu kılınır.)

Ürün bölümlerini uygulama

Yeni bir ürün bölümü uygulamadan önce ilgili AOSP'deki ürün bölümü değişiklikleri. Ardından product kurulumunu yapmak için aşağıdaki pano veya ürün geliştirme bayraklarını dahil edin:

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

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

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

  • product_specific: true Android.bp içinde başlıyor
  • LOCAL_PRODUCT_MODULE := true Android.mk içinde başlıyor

Doğrulanmış Başlatma'yı etkinleştir

product bölümü üzerinde oynanmasını önlemek için kötü amaçlı yazılımlar, Android Bu bölüm için Doğrulanmış Başlatma (AVB) (tıpkı vendor ve system bölümleri). AVB'yi etkinleştirmek için: şu derleme flag'lerini ekleyin: BOARD_AVB_PRODUCT_ADD_HASHTREE_FOOTER_ARGS