Bir Android çerçeve sürümü, çerçevenin neleri kullanabileceğini ve Hedef FCM sürümü gereksinimlerini tanımlayan, yükseltilebilir her Hedef FCM Sürümü için bir tane olmak üzere birden çok Çerçeve Uyumluluk Matrisine (FCM) sahiptir. FCM yaşam döngüsünün bir parçası olarak Android, HIDL HAL'leri kullanımdan kaldırır ve kaldırır, ardından FCM dosyalarını HAL Sürümünün durumunu yansıtacak şekilde değiştirir.
Yalnızca çerçeve OTA'larını kendi ekosistemlerinde etkinleştirmek için satıcı arabirimlerini genişleten iş ortakları, aynı yöntemleri kullanarak HIDL HAL'leri de kullanımdan kaldırmalı ve kaldırmalıdır.
terminoloji
Çerçeve Uyumluluk Matrisi (FCM) | Uygun satıcı uygulamalarına ilişkin çerçeve gereksinimlerini belirten bir XML dosyası. Uyumluluk matrisi sürümlenir ve her çerçeve sürümü için yeni bir sürüm dondurulur. Her çerçeve sürümü, birden çok FCM içerir. |
---|---|
Platform FCM Sürümleri (S F ) | Bir çerçeve sürümündeki tüm FCM sürümleri kümesi. Çerçeve, bu FCM'lerden birini karşılayan herhangi bir satıcı uygulamasıyla çalışabilir. |
FCM Versiyonu (F) | Bir çerçeve sürümündeki tüm FCM'ler arasındaki en yüksek sürüm. |
Hedef FCM Sürümü (V) | Bir satıcı uygulamasının karşıladığı, cihaz bildiriminde açıkça beyan edilen hedeflenen FCM sürümü ( SF'den ). Cihaz Bildiriminde daha yeni HAL sürümleri bildirebilse de, yayınlanan bir FCM'ye göre bir satıcı uygulaması oluşturulmalıdır. |
HAL Sürümü | Bir HAL Sürümü foo@xy biçimindedir; burada foo , HAL adıdır ve xy , belirli sürümdür; ör. nfc@1.0 , keymaster@3.0 (kök öneki, ör. android.hardware , bu belgede kullanılmamıştır.) |
Cihaz Bildirimi | Satıcı ve ODM görüntüleri de dahil olmak üzere satıcı arayüzünün cihaz tarafının hangi HAL sürümlerini sağladığını belirten XML dosyaları. Bir cihaz bildiriminin içeriği, cihazın Hedef FCM sürümü tarafından kısıtlanır ancak V'ye karşılık gelen FCM'ye göre kesinlikle daha yeni olan HAL'leri listeleyebilir. |
Cihaz HAL'leri | Cihaz bildiriminde listelenen (sağlanan) ve çerçeve uyumluluk matrisinde (FCM) listelenen (gerekli veya isteğe bağlı) HAL'ler. |
Cihaz Uyumluluk Matrisi (DCM) | Uygun çerçeve uygulamalarına ilişkin satıcı gereksinimlerini belirten bir XML dosyası. Her cihaz bir DCM içerir. |
Çerçeve Bildirimi | Sistem, system_ext ve ürün görüntüleri dahil satıcı arabiriminin çerçeve tarafının hangi HAL sürümlerini sağladığını belirten bir XML dosyası. Çerçeve bildirimindeki HAL'ler, cihazın Hedef FCM sürümüne göre dinamik olarak devre dışı bırakılır. |
Çerçeve HAL'leri | Çerçeve manifestosunda sağlandığı şekilde listelenen HAL'ler ve cihaz uyumluluk matrisinde (DCM) gerekli veya isteğe bağlı olarak listelenir. |
Yeni bir FCM Sürümünde Geliştirme
Android, her çerçeve sürümü için (Android 8, 8.1 vb.) FCM Sürümünü artırır. Geliştirme sırasında, yeni compatibility_matrix.F.xml
oluşturulur ve mevcut compatibility_matrix.f.xml
(burada f
< F
) artık değiştirilmez.
Yeni bir FCM Sürüm F
geliştirmeye başlamak için:
- En son
compatibility_matrix.<F-1>.xml
compatibility_matrix.F.xml
konumuna kopyalayın. - Dosyadaki
level
özniteliğiniF
olarak güncelleyin. - Bu uyumluluk matrisini cihaza yüklemek için ilgili yapı kurallarını ekleyin.
Yeni bir HAL ile tanışın
Geliştirme sırasında, mevcut FCM Sürüm F
Android'e yeni bir HAL (Wi-Fi, NFC vb.) eklerken, HAL'yi aşağıdaki optional
ayarlarla compatibility_matrix.F.xml
dosyasına ekleyin:
-
V = F
ile gönderilen aygıtların bu HAL ile başlatılması gerekiyorsaoptional="false"
,
VEYA -
V = F
ile gönderilen aygıtlar bu HAL olmadan başlatılabilirseoptional="true"
.
Örneğin, Android 8.1 cas@1.0
isteğe bağlı bir HAL olarak tanıttı. Android 8.1 ile başlayan cihazların bu HAL'yi uygulaması gerekli değildir, bu nedenle şu giriş (bu sürümün geliştirilmesi sırasında geçici olarak compatibility_matrix.current.xml
olarak adlandırılırdı) compatibility_matrix.F.xml
dosyasına eklenmiştir:
<hal format="hidl" optional="true"> <name>android.hardware.cas</name> <version>1.0</version> <interface> <name>IMediaCasService</name> <instance>default</instance> </interface> </hal>
HAL (minör) yükseltme
Geliştirme sırasında, bir HAL'nin mevcut F
Sürümü'nde xz
x.(z+1)
e küçük sürüm yükseltmesi olduğunda, bu sürüm şuysa:
-
V = F
ile başlayan cihazlarda gerekli olancompatibility_matrix.F.xml
,x.(z+1)
veoptional="false"
belirtmelidir. -
V = F
ile başlatılan cihazlarda gerekli değildir,compatibility_matrix.F.xml
,compatibility_matrix.<F-1>.xml
xy-z
ve isteğe bağlılığı kopyalamalı ve sürümüxw-(z+1)
olarak değiştirmelidir (buradaw >= y
)
Örneğin, Android 8.1, 1.0 HAL'ın alt sürüm yükseltmesi olarak broadcastradio@1.1
tanıttı. Eski sürüm olan broadcastradio@1.0
, Android 8.0 ile başlatılan cihazlar için isteğe bağlıdır; daha yeni sürüm olan broadcastradio@1.1
, Android 8.1 ile başlayan cihazlar için isteğe bağlıdır. compatibility_matrix.1.xml
dosyasında:
<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
dosyasına kopyalandı ve aşağıdaki ş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 (majör) yükseltme
Geliştirme sırasında, bir HAL geçerli FCM Sürüm F
bir ana sürüm yükseltmesine sahip olduğunda, yeni ana sürüm x.0
aşağıdaki optional
ayarlarla compatibility_matrix.F.xml
dosyasına eklenir:
-
V = F
ile gönderilen aygıtlarınx.0
ile başlatılması gerekiyorsa, yalnızcax.0
sürümüyleoptional="false"
. -
optional="false"
ancakV = F
ile gönderilen cihazların bu HAL ile başlatılması gerekiyorsa, ancak daha eski bir ana sürümle başlatılabiliyorsa, aynı<hal>
etiketindeki eski ana sürümlerle birlikte. -
V = F
ile gönderilen aygıtların HAL'ı başlatması gerekmiyorsa,optional="true"
.
Örneğin, Android 9 health@2.0
1.0 HAL'ın ana sürüm yükseltmesi olarak sunar ve 1.0 HAL'ı kullanımdan kaldırır. Daha eski sürüm olan health@1.0
, Android 8.0 ve Android 8.1 ile başlatılan cihazlar için isteğe bağlıdır. Android 9 ile başlatılan cihazlar, kullanımdan kaldırılan 1.0 HAL'yi sağlamamalı 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
içinde:
<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
dosyasına kopyalanır ve aşağıdaki şekilde değiştirilir:
<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:
- 2.0 HAL,
optional="false"
ilecompatibility_matrix.3.xml
olduğundan, Android 9 ile başlatılan cihazların 2.0 HAL ile gönderilmesi gerekir. - 1.0 HAL
compatibility_matrix.3.xml
içinde olmadığından, Android 9 ile başlatılan cihazlar 1.0 HAL'yi sağlamamalıdır (bu HAL kullanımdan kaldırılmıştır). - 1.0 HAL, eski/1/2.xml'de (Android 9'un birlikte çalışabileceği eski FCM Sürümleri) isteğe bağlı bir HAL olarak bulunduğundan, Android 9 çerçevesi, 1.0 HAL (kaldırılmış bir HAL Sürümü olarak kabul edilmez) ile çalışmaya devam edebilir ).
Yeni FCM Sürümleri
Sistem bölümünde bir FCM Sürümü yayımlama işlemi, AOSP sürümünün bir parçası olarak yalnızca Google tarafından yapılır ve aşağıdaki adımları içerir:
-
compatibility_matrix.F.xml
dosyasınınlevel="F"
özniteliğine sahip olduğundan emin olun. - Tüm cihazların oluşturulduğundan ve önyüklendiğinden emin olun.
- En son çerçeveyle (Gönderim API düzeyine göre) başlatılan cihazların Hedef FCM Sürümü
V >= F
sahip olduğundan emin olmak için VTS testlerini güncelleyin . - Dosyayı AOSP'de yayınlayın.
Örneğin VTS testleri , Android 9 ile başlatılan cihazların Hedef FCM Sürümü >= 3 olmasını sağlar.
Ayrıca ürün ve system_ext FCM'leri, her bir platform FCM sürümü için gereklilikleri de listeleyebilir. FCM sürümlerinin ürün ve system_ext bölümleri üzerinde yayınlanması sırasıyla bu görüntülerin sahibi tarafından yapılır. Ürün ve system_ext bölümlerindeki FCM sürüm numaraları, sistem bölümündekilerle aynı hizada olmalıdır. Sistem bölümündeki FCM sürümlerine benzer şekilde, ürün ve system_ext bölümlerindeki FCM sürüm F'deki uyumluluk matrisi, hedef FCM sürüm F'ye sahip bir cihazdaki gereksinimleri yansıtır.
HAL Sürümü kullanımdan kaldırılıyor
Bir HAL Sürümünün kullanımdan kaldırılması bir geliştirici kararıdır (yani, AOSP HAL'ler için kararı Google verir). Daha yüksek bir HAL sürümü (küçük veya büyük) yayınlandığında olabilir.
Bir cihaz HAL'ını kullanımdan kaldırma
Belirli bir HAL foo@xy
cihazı FCM Sürüm F
kullanımdan kaldırıldığında, bu, Hedef FCM Sürümü V = F
veya üstü ile başlatılan herhangi bir cihazın xy
sürümünde veya xy
daha eski herhangi bir sürümde foo
uygulamaması gerektiği anlamına gelir. Kullanımdan kaldırılmış bir HAL sürümü, cihazların yükseltilmesi için çerçeve tarafından hâlâ desteklenmektedir.
FCM Sürümü yayınlandığında, HAL Sürümü foo@xy
F
FCM Sürümü V = F
için en son FCM'de açıkça belirtilmemişse kullanımdan kaldırılmış olarak kabul edilir. V = F
ile başlayan cihazlar için aşağıdaki koşullardan biri doğrudur:
- Çerçeve daha yüksek bir sürüm gerektirir (ana veya ikincil);
- Çerçeve artık HAL gerektirmez.
Örneğin, Android 9'da health@2.0
, 1.0 HAL'ın ana sürüm yükseltmesi olarak sunulmuştur. health@1.0
compatibility_matrix.3.xml
kaldırılmıştır, ancak compatibility_matrix.legacy.xml
, compatibility_matrix.1.xml
ve compatibility_matrix.2.xml
mevcuttur. Bu nedenle, health@1.0
kullanımdan kaldırılmış olarak kabul edilir.
HAL çerçevesini kullanımdan kaldırma
Belirli bir HAL foo@xy
çerçevesi FCM Sürüm F
kullanımdan kaldırıldığında, bu, Hedef FCM Sürümü V = F
veya üstü ile başlatılan herhangi bir cihazın, çerçevenin xy
sürümünde veya xy
daha eski herhangi bir sürümde foo
sağlamasını beklememesi gerektiği anlamına gelir. Kullanımdan kaldırılmış bir HAL sürümü, aygıtların yükseltilmesi için çerçeve tarafından sağlanmaya devam etmektedir.
FCM sürüm F
yayınlandığında, çerçeve bildirimi foo@xy
için max-level=" F - 1 "
belirtiyorsa, bir HAL Sürümü foo@xy
kullanımdan kaldırıldığı kabul edilir. V = F
ile başlatılan cihazlar için çerçeve HAL foo@xy
sağlamaz. V = F
ile başlatılan cihazlardaki cihaz uyumluluk matrisi max-level < V
olan çerçeve HAL'lerini listelememelidir.
Örneğin, Android 12'de schedulerservice@1.0
kullanımdan kaldırılmıştır. max-level
özelliği, Android 11'de tanıtılan FCM sürümü olan 5
olarak ayarlanmıştır. Android 12 çerçeve manifestosuna bakın.
Hedef FCM Sürümleri için desteğin kaldırılması
Belirli bir Hedef FCM Sürüm V
aktif cihazları belirli bir eşiğin altına düştüğünde, Hedef FCM Sürümü bir sonraki çerçeve sürümünün ayarlanan S F'sinden kaldırılır. Bu, aşağıdaki adımların her ikisi tarafından yapılır:
-
compatibility_matrix.V.xml
dosyasını derleme kurallarından kaldırma (böylece sistem görüntüsüne yüklenmemesi için) ve kaldırılan işlevselliğe uygulanan veya ona bağlı olan tüm kodları silme. - V'den
max-level
veyaV
eşit olan çerçeve HAL'lerini çerçeve bildiriminden kaldırma ve kaldırılan çerçeve HAL'lerini uygulayan tüm kodları silme.
Belirli bir çerçeve sürümü için SF dışında bir hedef FCM Sürümüne sahip cihazlar, bu sürüme yükseltme yapamaz.
HAL Sürüm durumu
Aşağıdaki bölümlerde (kronolojik sırayla) bir HAL Sürümünün olası durumları açıklanmaktadır.
yayınlanmamış
Cihaz HAL'leri için, bir HAL Sürümü genel ve donmuş uyumluluk matrislerinin hiçbirinde yer almıyorsa, yayınlanmamış ve muhtemelen geliştirme aşamasında olarak kabul edilir. Bu, yalnızca compatibility_matrix.F.xml
dosyasında bulunan HAL Sürümlerini içerir. Örnekler:
- Android 9'un geliştirilmesi sırasında
health@2.0
HAL, yayınlanmamış bir HAL olarak kabul edildi ve yalnızcacompatibiility_matrix.3.xml
mevcuttu. -
teleportation@1.0
HAL, yayınlanmış herhangi bir uyumluluk matrisinde yer almaz ve ayrıca yayınlanmamış bir HAL olarak kabul edilir.
Çerçeve HAL'leri için, bir HAL sürümü yalnızca ilgisiz bir geliştirme dalının çerçeve bildiriminde yer alıyorsa, yayınlanmamış olarak kabul edilir.
Yayınlanmış ve Güncel
Cihaz HAL'leri için, bir HAL Sürümü herhangi bir genel ve donmuş uyumluluk matrisindeyse, yayınlanır. Örneğin, FCM Sürüm 3 dondurulup AOSP'ye yayınlandıktan sonra, health@2.0
HAL, yayınlanmış ve geçerli bir HAL Sürümü olarak kabul edilir.
Bir HAL Sürümü, en yüksek FCM Sürümüne sahip genel ve donmuş bir uyumluluk matrisindeyse, HAL sürümü günceldir (yani kullanımdan kaldırılmamıştır). Örneğin, compatibility_matrix.legacy.xml
tanıtılan mevcut HAL Sürümleri (örneğin, uyumluluk_matrix.legacy.xml'de tanıtılan nfc@1.0
gibi) compatibility_matrix.3.xml
var olmaya devam eden HAL Sürümleri de yayınlanmış ve geçerli HAL Sürümleri olarak kabul edilir.
Çerçeve HAL'leri için, bir HAL sürümü max-level
max-level
özniteliği olmadan en son yayınlanan şubenin çerçeve bildiriminde yer alıyorsa veya (alışılmadık şekilde) bu dalda yayınlanan FCM versiyonuna eşit veya daha yüksek bir maks. ve geçerli HAL sürümü. Örneğin, displayservice
HAL, tarafından belirtildiği şekilde Android 12'de yayınlanmıştır ve günceldir. Android 12framework manifest
.
Yayınlandı ama Kullanımdan Kaldırıldı
Cihaz HAL'leri için bir HAL Sürümü, yalnızca ve yalnızca aşağıdakilerin tümü karşılanırsa kullanımdan kaldırılır:
- Serbest bırakıldı.
- En yüksek FCM Versiyonuna sahip olan, genel ve donmuş uyumluluk matrisinde değildir.
- Çerçevenin hala desteklediği, halka açık ve donmuş bir uyumluluk matrisindedir.
Örnekler:
-
health@1.0
HAL,compatibility_matrix.legacy.xml
,compatibility_matrix.1.xml
vecompatibility_matrix.2.xml
içindedir, ancakcompatibility_matrix.3.xml
içinde değildir. Bu nedenle, Android 9'da kullanımdan kaldırılmış olarak kabul edilir. - Power HAL, Android 9'da küçük bir sürüm yükseltmesine sahiptir, ancak
power@1.0
halacompatibility_matrix.3.xml
içindedir.-
power@1.0
compatibility_matrix.legacy.xml
,compatibility_matrix.1.xml
vecompatibility_matrix.2.xml
içindedir. -
compatibility_matrix.3.xml
power@1.0-1
var.
-
Bu nedenle, power@1.0
Android 9'da günceldir, ancak kullanımdan kaldırılmış DEĞİLDİR .
Çerçeve HAL'leri için, bir HAL sürümü, bu dalda yayınlanan FCM sürümünden daha düşük bir max-level
özniteliğine sahip en son yayınlanan dalın çerçeve bildiriminde yer alıyorsa, yayınlanmış ancak kullanımdan kaldırılmış bir HAL sürümü olarak kabul edilir. Örneğin, schedulerservice
HAL, tarafından belirtildiği gibi Android 12'de yayınlanmıştır ancak kullanımdan kaldırılmıştır. Android 12framework manifest
.
Kaldırıldı
Cihaz HAL'leri için, bir HAL Sürümü ancak ve ancak aşağıdakiler doğruysa kaldırılır:
- Daha önce yayınlandı.
- Çerçevenin desteklediği herhangi bir genel ve donmuş uyumluluk matrisinde değildir.
Halka açık, donmuş ancak çerçeve tarafından desteklenmeyen uyumluluk matrisleri, kaldırılan HAL Sürümleri setini tanımlamak için kod tabanında tutulur, böylece kaldırılan HAL'lerin yeni cihazlarda olmadığından emin olmak için VTS testleri yazılabilir.
Çerçeve HAL'leri için, bir HAL sürümü ancak ve ancak aşağıdakiler karşılanırsa kaldırılır:
- Daha önce yayınlandı.
- En son yayınlanan dalın herhangi bir çerçeve bildiriminde değildir.
Eski FCM'ler
Hedef FCM Sürüm mirası, tüm Tiz olmayan cihazlar için özel bir değerdir. Eski FCM, compatibility_matrix.legacy.xml
, eski cihazlardaki (yani Android 8.0'dan önce başlatılan cihazlar) çerçevenin gereksinimlerini listeler.
Bu dosya, F
sürümüne sahip bir FCM için mevcutsa, cihaz bildiriminin bu dosyayla uyumlu olması koşuluyla, Tiz olmayan herhangi bir cihaz F
yükseltilebilir. Kaldırılması, diğer Hedef FCM Sürümleri için FCM'lerle aynı prosedürü izler (etkin 8.0 öncesi cihazların sayısı belirli bir eşiğin altına düştüğünde kaldırılır).
Yayınlanan FCM sürümleri
Yayınlanan FCM sürümlerinin listesi hardware/interfaces/compatibility_matrices
altında bulunabilir.
Belirli bir Android sürümüyle yayınlanan FCM sürümünü bulmak için bkz Level.h
.