FCM yaşam döngüsü

Bir Android çerçevesi sürümünde birden fazla Çerçeve Uyumluluk Matrisi bulunuyor yükseltilebilir her hedef FCM sürümü için bir metrik olacak şekilde kullanabilir. FCM kapsamında yaşam döngüsü boyunca, Android HIDL HAL'leri kullanımdan kaldırıp kaldırır, ardından FCM dosyalarını HAL sürümünün durumunu yansıtır.

Kendi ekosistemlerinde yalnızca çerçeve odaklı OTA'ları etkinleştirmek için tedarikçi firma arayüzleri de aynı yöntemlerine göz atın.

Terminoloji

Çerçeve Uyumluluk Matrisi (FCM)
Uygun tedarikçi firmayla ilgili çerçeve gereksinimlerini belirten XML dosyası hakkında bilgi edindiniz. Uyumluluk matrisi, sürümlüdür ve matris için yeni bir sürüm her çerçeve sürümü için dondurulur. Her çerçeve sürümü birden fazla FCM var.
Platform FCM Sürümleri (SF)
Bir çerçeve sürümündeki tüm FCM sürümleri grubu. Bu çerçeve çalışabilir .
FCM Sürümü (F)
Bir çerçeve sürümündeki tüm FCM'ler arasında en yüksek sürüm.
Hedef FCM Sürümü (V)
Cihazda açıkça belirtilmiş hedeflenen FCM sürümü (SF'den) bildirmelidir. Tedarikçi firma uygulaması, yayınlanmış bir FCM'ye göre üretilir. Ancak, Cihaz manifesti.
HAL Sürümü
HAL Sürümü foo@x.y biçimindedir. Burada foo, HAL adıdır, x.y ise ilgili sürüm; ör. nfc@1.0, keymaster@3.0 (kök önek, ör. android.hardware, bu doküman boyunca atlanmıştır.)
Cihaz Manifesti
Tedarikçi firma arayüzünün cihaz tarafındaki HAL sürümlerini belirten XML dosyaları, dahil olmak üzere tüm tedarikçilerin Cihaz manifestinin içeriği: cihazın Hedef FCM sürümü tarafından sınırlandırılmıştır, ancak V'ye karşılık gelen FC'ye göre tamamen yeni.
Cihaz HAL'leri
Cihaz manifest dosyasında (sağlanan) ve listelenen HAL'ler (zorunlu veya isteğe bağlı) eklemesi gerekir.
Cihaz Uyumluluk Matrisi (DCM)
Uygun çerçeveyle ilgili tedarikçi gereksinimlerini belirten XML dosyası hakkında bilgi edindiniz. Her cihazda bir DCM bulunur.
Çerçeve Çalışması Manifesti
Tedarikçi firmanın çerçeve tarafındaki hangi HAL sürümlerini belirten XML dosyası system, system_ext ve ürün resimlerini içeren arayüz sağlar. HAL'ler çerçeve manifesti cihazın Target FCM'sine göre dinamik olarak devre dışı bırakılır sürümünü indirin.
Çerçeve HAL'leri
Çerçeve manifest'inde sağlandığı ve şunlardan biri olarak listelenen HAL'ler: zorunlu veya isteğe bağlı olması gerekir.

Kod tabanındaki FCM yaşam döngüsü

Bu belgede FCM yaşam döngüsü özet olarak açıklanmaktadır. Şu anda desteklenen manifestler için hardware/interfaces/compatibility_matrix.<FCM>.xml dokümanına bakın nerede, örneğin system/libvintf/include/vintf/Level.h

İlgili Android sürümünü gönderen bir cihazın eşdeğer seviyede veya daha büyük olan FCM değeri Örneğin, Android 11 yüklü cihazlarla gönderim genellikle FCM düzeyi 5'e sahip olsa da FCM düzeyi 6 veya üstü (çeşitli ek şartlara sahip) uyumluluk matrislerinde belirtildiğinden emin olun. Desteklenen düzeyler şunlardır:

FCM Android Sürümü
4 Android 10/Q
5 Android 11/R
6 Android 12/S
7 Android 13/T
8 Android 14/U
202404 Android 15/V

Android, bir FCM düzeyini kullanımdan kaldırdığında mevcut cihazlarda desteklenmeye devam eder.

Yeni bir FCM sürümünde geliştirme

Android her çerçeve sürümü (ör. Android 8, 8.1 vb.) bakın. Geliştirme sırasında yeni compatibility_matrix.F.xml oluşturulur ve mevcut compatibility_matrix.f.xml (f < F) artık değiştirilmez.

Yeni bir FCM Sürümü (F) içinde geliştirmeye başlamak için:

  1. Son compatibility_matrix.<F-1>.xml dosyasını şuraya kopyala: compatibility_matrix.F.xml.
  2. Dosyadaki level özelliğini F olarak güncelleyin.
  3. Bu uyumluluk matrisini olanak tanır.

Yeni bir HAL'yi kullanma

Android'e yeni bir HAL (kablosuz bağlantı, NFC vb.) sunarken geliştirme sırasında F adlı geçerli FCM sürümünde, HAL'yi compatibility_matrix.F.xml öğesine ekleyin ve şu optional ayarları:

  • V = F ile gönderilen cihazların bu HAL ile başlatılması gerekiyorsa optional="false",
  • V = F ile gönderilen cihazlar bu HAL olmadan başlatılabiliyorsa optional="true".

Örneğin, Android 8.1'de isteğe bağlı bir HAL olarak cas@1.0 kullanıma sunulmuştur. Başlatılan cihazlar bu HAL'yi uygulamak için gerekli değildir.Bu nedenle, aşağıdaki giriş compatibility_matrix.F.xml adlı koleksiyona eklendi (önceki adıyla adlandırılmıştır) Bu sürümün geliştirilmesi sırasında geçici olarak compatibility_matrix.current.xml):

<hal format="hidl" optional="true">
    <name>android.hardware.cas</name>
    <version>1.0</version>
    <interface>
        <name>IMediaCasService</name>
        <instance>default</instance>
    </interface>
</hal>

HAL'yi yükseltme (küçük)

Geliştirme sırasında bir HAL, x.z sürümünden Geçerli FCM F Sürümünde x.(z+1) (bu sürüm aşağıdaki gibiyse):

  • V = F, compatibility_matrix.F.xml ile başlatılan cihazlarda zorunludur x.(z+1) ve optional="false" belirtilmeli.
  • V = F ile başlatılan cihazlarda zorunlu değildir, compatibility_matrix.F.xml, x.y-z ve isteğe bağlılığı şuradan kopyalamalıdır: compatibility_matrix.<F-1>.xml ve sürümü x.w-(z+1) olarak değiştirin (burada w >= y).

Örneğin, Android 8.1'de alt sürüm olarak broadcastradio@1.1 kullanıma sunulmuştur. 1.0 HAL sürümüne yükseltildi. Eski sürüm olan broadcastradio@1.0, Android 8.0 ile lansmanı yapılacak cihazlarda broadcastradio@1.1, Android 8.1 ile başlatılan cihazlar için isteğe bağlıdır. İçinde compatibility_matrix.1.xml:

<hal format="hidl" optional="true">
    <name>android.hardware.broadcastradio</name>
    <version>1.0</version>
    <interface>
        <name>IBroadcastRadioFactory</name>
        <instance>default</instance>
    </interface>
</hal>

Bu giriş compatibility_matrix.F.xml alanına kopyalandı ve şu şekilde değiştirildi:

<hal format="hidl" optional="true">
    <name>android.hardware.broadcastradio</name>
    <version>1.0-1</version>
    <interface>
        <name>IBroadcastRadioFactory</name>
        <instance>default</instance>
    </interface>
</hal>

HAL'yi yükseltme (büyük)

Geliştirme sırasında, mevcut FCM'de bir HAL'nin ana sürüm yükseltmesi olduğunda F sürümü, x.0 adlı yeni ana sürüm Şu optional ayarlarıyla compatibility_matrix.F.xml:

  • Şu cihazla birlikte gönderilen cihazlar varsa yalnızca x.0 sürümüne sahip optional="false": V = F, x.0 ile başlatılmalıdır.
  • optional="false" ama aynı <hal> içinde daha eski ana sürümlerle birlikte etiketi, V = F ile gönderilen cihazların bu HAL ile başlatılması gerekiyorsa, ancak eski bir ana sürümle.
  • V = F ile gönderilen cihazların başlatılması gerekmiyorsa optional="true" HAL.

Örneğin, Android 9, health@2.0 uygulamasını bir ana sürüm yükseltmesi ile 1.0 HAL'yi kullanımdan kaldırır. Daha eski sürümü (health@1.0), Android 8.0 ve Android 8.1 Android 9 ile kullanıma sunulan cihazlar desteği sonlandırılmış 1.0 HAL sürümünü sunmaz ve bunun yerine yeni 2.0 sürümünü sağlamalıdır. compatibility_matrix.legacy.xml compatibility_matrix.1.xml ve compatibility_matrix.2.xml:

<hal format="hidl" optional="true">
    <name>android.hardware.health</name>
    <version>1.0</version>;
    <interface>
        <name>IHealth</name>
        <instance>default</instance>
    </interface>
</hal>

Bu giriş compatibility_matrix.F.xml hedefine kopyalandı ve şu şekilde değiştirildi:

<hal format="hidl" optional="false">
    <name>android.hardware.health</name>
    <version>2.0</version>
    <interface>
        <name>IHealth</name>
        <instance>default</instance>
    </interface>
</hal>

Kısıtlamalar:

  • Çünkü 2.0 HAL, compatibility_matrix.3.xml bölgesindedir ve optional="false", Android'le başlatılan cihazlar 9, 2,0 HAL ile gönderilmelidir."
  • compatibility_matrix.3.xml içinde 1.0 HAL olmadığı için, Android 9 ile başlatılan cihazlarda 1.0 HAL'dir (bu HAL'nin desteği sonlandırılmıştır).
  • 1.0 HAL, legacy/1/2.xml sürümünde ( (Android 9 ile çalışabilir) Android 9 çerçevesi, 1.0 HAL ile çalışmaya devam edebilir (kaldırılmış bir HAL Sürümü olarak kabul edilmez).

Yeni FCM sürümleri

Sistem bölümünde FCM Sürümü yayınlama işlemi yalnızca şu adımları içerir:

  1. compatibility_matrix.F.xml öğesinde level="F" özelliğinin bulunduğundan emin olun.
  2. Tüm cihazların derlendiğinden ve başlatıldığından emin olun.
  3. VTS testlerini güncelleme cihazların en yeni çerçeve (temel (Gönderim API'si düzeyinde) V >= F Hedef FCM Sürümüne sahip kullanıcılar.
  4. Dosyayı AOSP'de yayınlayın.

Örneğin, VTS testleri Android ile kullanıma sunulan cihazların 9'da Hedef FCM Sürümü >= 3 vardır.

Buna ek olarak, product ve system_ext FCM'ler her bir sistem için gereksinimleri de listeleyebilir platform FCM sürümleridir. Ürün ve sistem uzantısında FCM sürümlerinin yayınlanması Bölümler, sırasıyla bu görüntülerin sahibi tarafından yapılır. FCM sürümü üründeki sayılar ve system_ext bölümlerinin bölümlerindeki sayılarla sistem bölümü. Sistem bölümündeki FCM sürümlerine benzer şekilde, ürün ve system_ext bölümlerinde, FCM sürüm F'de uyumluluk matrisi Hedef FCM sürüm F'ye sahip cihazdaki gereksinimleri yansıtıyor.

HAL sürümünün kullanımdan kaldırılması

Bir HAL Sürümünün kullanımdan kaldırılması geliştiriciye ait bir karardır (ör. AOSP HAL'ler, Google karar verir). Bu durum, HAL’nin daha yüksek bir sürüm (küçük ya da ana) yayınlanır.

Cihaz HAL'sini kullanımdan kaldırma

Belirli bir cihaz HAL foo@x.y, FCM F sürümünde kullanımdan kaldırıldığında bunun anlamı Hedef FCM Sürüm V = F veya sonraki sürümlerle başlatılan hiçbir cihazın foo öğesini x.y sürümünde veya x.y sürümünden daha eski bir sürümde uygulayın. Desteği sonlandırılmış HAL sürümü, cihazların yeni sürüme geçirilmesi çerçevesinde desteklenmeye devam etmektedir.

FCM Sürümü F yayınlandığında, bir HAL Sürümü foo@x.y kabul edilir ilgili HAL Sürümü, son Hedef FCM V = F sürümü için FCM. V = F ile başlatılan cihazlar için şu koşullar geçerlidir:

  • Çerçeve daha yüksek bir sürüm (ana veya alt sürüm) gerektiriyor;
  • Söz konusu çerçeve artık HAL gerektirmez.

Örneğin, Android 9'da health@2.0 . health@1.0, şu çevreden kaldırıldı: compatibility_matrix.3.xml ancak mevcut compatibility_matrix.legacy.xml, compatibility_matrix.1.xml, ve compatibility_matrix.2.xml dokümanlarına göz atın. Bu nedenle, health@1.0 desteği sonlandırıldı.

Çerçeve HAL'sini kullanımdan kaldırma

Belirli bir HAL foo@x.y çerçevesinin FCM F sürümünde kullanımdan kaldırılması, Hedef FCM Sürüm V = F veya sonraki sürümlerle başlatılan hiçbir cihazın çerçevenin x.y sürümünde veya daha eski herhangi bir sürümde foo sağlaması beklenir (x.y) kadar. Kullanımdan kaldırılmış bir HAL sürümü hâlâ cihazlar yeni sürüme geçiriliyor.

FCM sürümü F yayınlandığında, bir HAL Sürümü foo@x.y kabul edilir Çerçeve manifest dosyasında foo@x.y tarih aralığı için max-level="F - 1". Başlatılacak cihazlar için V = F kullanıldığında çerçeve, HAL foo@x.y sağlamaz. Cihaz V = F ile başlatılan cihazlardaki uyumluluk matrisi, çerçeveyi listelememelidir max-level < V ile HAL'ler.

Örneğin, Android 12'de schedulerservice@1.0 desteği sonlandırıldı. Öğenin max-level özelliği 5 olarak ayarlandı. FCM sürümü kullanıma sunuldu kullanıma sunduk. Görüntüleyin Android 12 çerçevesi manifesto içinde yeniden etkinleştirilmelidir.

Hedef FCM sürümleri için desteğin kaldırılması

Belirli bir Hedef FCM Sürümündeki (V) etkin cihazlar belirli bir değerin altına düştüğünde eşiğinden ayarlanırsa Hedef FCM Sürümü, bir sonraki çerçevedir. Bu işlem, aşağıdaki adımların her ikisi de uygulanarak gerçekleştirilir:

  1. compatibility_matrix.V.xml kaldırma işlemi, derleme kurallarından sistem görüntüsünde yüklü olan)) silme işleminden sonra sistem görüntüsüne yeni deneyim devre dışı bırakıldı.

  2. max-level değerinden düşük veya V değerine eşit olan çerçeve HAL'lerini ve kaldırılan etiketi uygulayan kodları silme çerçeve HAL'leri (HAL'ler) kullanır.

Belirli bir çerçeve için SF dışında hedef FCM sürümüne sahip cihazlar sürümü bu sürüme yükseltilemiyor.

HAL sürüm durumu

Aşağıdaki bölümlerde olası durumlar (kronolojik sırayla) açıklanmıştır olduğunu varsayalım.

Yayınlanmamış

Cihazın HAL'leri için, herkese açık hiçbir cihazda donmuş olmayan bir HAL Sürümü varsa kullanıma sunulmamış ve muhtemelen geliştirme aşamasında olduğu kabul edilir. Yalnızca compatibility_matrix.F.xml dilinde olan HAL Sürümleri buna dahildir. Örnekler:

  • Android 9'un geliştirilmesi sırasında health@2.0 HAL, yayınlanmamış bir HAL olarak kabul ediliyordu ve yalnızca şuralarda vardı: compatibility_matrix.3.xml.
  • teleportation@1.0 HAL'si, yayınlanan hiçbir uyumluluk matrisinde yer almamaktadır ve aynı zamanda yayınlanmamış HAL olarak da kabul edilir.

Çerçeve HAL'leri için bir HAL sürümü yalnızca çerçeve manifestinde yer alıyorsa ilgisi olmayan bir geliştirme dalıysa yayınlanmamış olarak kabul edilir.

Yayınlanmış ve güncel

Cihazın HAL'leri için, herkese açık ve donmuş uyumluluklara sahip bir HAL Sürümü varsa yayınlanır. Örneğin, FCM Sürüm 3 dondurulup yayınlandıktan sonra health@2.0 HAL, AOSP'ye yayınlanmış ve mevcut bir HAL Sürümü olarak kabul edilir.

Bir HAL Sürümü En yüksek FCM Sürümü, HAL sürümü günceldir (kullanımdan kaldırılmamıştır). Örneğin, örneğin, mevcut HAL Sürümleri (ör. nfc@1.0, compatibility_matrix.legacy.xml) compatibility_matrix.3.xml içinde var olmaya devam edenler de yayınlanan ve mevcut HAL Sürümleridir.

Çerçeve HAL'leri için çerçeve manifestinde HAL sürümü bulunuyorsa max-level özelliği olmayan veya (genellikle) bir max-level, bu dalda yayınlanan FCM sürümüne eşit veya bu sürümden daha yüksek ise yayınlanmış ve mevcut bir HAL sürümü olarak kabul edilir. Örneğin, Android'de displayservice HAL yayınlandı ve şu anda kullanılıyor 12, Android 12 çerçevesi manifest dosyasındaki talimatları uygulayın.

Yayınlanan ancak desteği sonlandırılan

Cihazların HAL'leri için HAL Sürümü, yalnızca aşağıdaki koşulların tümü sağlandığında kullanımdan kaldırılır karşılanıyor:

  • Yayınlandı.
  • Herkese açık ve donmuş uyumluluk matrisinde en yüksek değere sahip değil, FCM Sürümü.
  • Çerçeve, hâlâ herkese açık ve donmuş bir uyumluluk matrisinde destekler.

Örnekler:

Dolayısıyla power@1.0 günceldir, ancak Android'de desteği DEĞİLDİR. 9.

Çerçeve HAL'leri için bir HAL sürümü en son FCM sürümü sürümünden daha düşük bir max-level özelliğine sahip serbest dal bu dalda yayınlanmış ancak desteği sonlandırılmış bir HAL sürümü olarak kabul edilir. Örneğin, örnek olarak, schedulerservice HAL kullanıma sunulmuştur ancak şu sürümde kullanımdan kaldırılmıştır: Android 12 çerçevesi manifesti.

Kaldırıldı

Cihazların HAL'leri için HAL Sürümü yalnızca aşağıdaki durumlarda kaldırılır: doğrudur:

  • Daha önce yayınlanmış.
  • Çerçevenin, herkese açık ve donmuş uyumluluk matrisinde yer almadığını destekler.

Herkese açık, dondurulmuş ancak çerçeve, kaldırılan HAL Sürümlerini tanımlamak üzere kod tabanında tutulur. VTS testlerinin, kaldırılan HAL'lerin yeni cihazlarda olmadığından emin olmak için yazılabileceğinden emin olun.

Çerçeve HAL'leri için HAL sürümü yalnızca aşağıdaki durumlarda kaldırılır: karşılandı:

  • Daha önce yayınlanmış.
  • En son yayınlanan dalın herhangi bir çerçeve manifestinde değil.

Eski FCM'ler

Eski hedef FCM sürümü, Treble olmayan tüm cihazlar için özel bir değerdir. İlgili içeriği oluşturmak için kullanılan eski FCM, compatibility_matrix.legacy.xml, gereksinimleri listeler (ör. Android 8.0'dan önce kullanıma sunulan cihazlar) için çerçevenin gereğini yapabilirsiniz.

Bu dosya F sürümüne sahip bir FCM için mevcutsa Treble olmayan herhangi bir cihaz Cihaz manifestinin bu dosyayla uyumlu olması şartıyla F sürümüne yükseltildi. Bu Kaldırma işlemi, diğer Hedef FCM Sürümleri için FCM'lerle aynı prosedürü izler (8.0 sürümünden önceki etkin cihazların sayısı belirli bir değerin altına düştüğünde kaldırılır) eşik) hesaplanır.

Yayınlanan FCM sürümleri

Yayınlanan FCM sürümlerinin listesini şurada bulabilirsiniz: hardware/interfaces/compatibility_matrices.

Belirli bir Android sürümüyle yayınlanan FCM sürümünü bulmak için şuraya bakın: Level.h.