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. Buradafoo
, 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. Görmek için
manifest dosyaları için aşağıdaki sayfaya bakın:
hardware/interfaces/compatibility_matrix.<FCM>.xml
.
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) için FCM sürümünü artırır
8 ve 8.1). Geliştirme sırasında yeni compatibility_matrix.F.xml
oluşturulur ve mevcut compatibility_matrix.f.xml
(burada f
< F
) yoktur
artık değişti.
Yeni bir FCM Sürümü (F
) içinde geliştirmeye başlamak için:
- Son
compatibility_matrix.<F-1>.xml
dosyasını şuraya kopyala:compatibility_matrix.F.xml
. - Dosyadaki
level
özelliğiniF
olarak güncelleyin. - 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ı gerekiyorsaoptional="false"
,V = F
ile gönderilen cihazlar bu HAL olmadan başlatılabiliyorsaoptional="true"
.
Örneğin, Android 8.1'de isteğe bağlı bir HAL olarak cas@1.0
kullanıma sunulmuştur. Cihazlar
Bu HAL'yi uygulamak için Android 8.1 ile başlamak gerekli değildir, bu nedenle
aşağıdaki giriş compatibility_matrix.F.xml
adresine eklendi (eski adıyla
geliştirme sürecinde geçici olarak compatibility_matrix.current.xml
adlı
yayın):
<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 zorunludurx.(z+1)
veoptional="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 (buradaw >= 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 sahipoptional="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ı gerekmiyorsaoptional="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
yeni 2.0 sürümünü sağlayın. Örneğin,
compatibility_matrix.legacy.xml
compatibility_matrix.1.xml
ve
compatibility_matrix.2.xml
şu girişi içerir:
<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şi compatibility_matrix.F.xml
alanına kopyalayıp şu şekilde değiştirin:
şöyle olur:
<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 veoptional="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:
compatibility_matrix.F.xml
öğesindelevel="F"
özelliğinin bulunduğundan emin olun.- Tüm cihazların derlendiğinden ve başlatıldığından emin olun.
- 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. - 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ı şudur:
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;
- Çerçeve artık HAL gerektirmiyor.
Ö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:
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ı.max-level
değerinden düşük veyaV
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
içinde 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:
health@1.0
HAL'si verildicompatibility_matrix.legacy.xml
,compatibility_matrix.1.xml
, vecompatibility_matrix.2.xml
ancak şurada yok:compatibility_matrix.3.xml
. Bu nedenle, Android 9- Güç HAL'de Android'de küçük bir sürüm yükseltmesi bulunuyor.
9, ancak
power@1.0
hâlâ devam ediyorcompatibility_matrix.3.xml
. power@1.0
compatibility_matrix.legacy.xml
,compatibility_matrix.1.xml
, vecompatibility_matrix.2.xml
.compatibility_matrix.3.xml
,power@1.0-1
sahip.
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
.