Tedarikçiler, yeni cihazlar geliştirip kullanıma sunarken cihaz manifestinde (DM) hedeflenen FCM sürümünü tanımlayıp beyan edebilir. Tedarikçi firmalar, eski cihazlar için tedarikçi firma resmini yükseltirken yeni HAL sürümlerini uygulamayı ve hedef FCM sürümünü artırmayı seçebilir.
Yeni cihazlar geliştirme
Yeni cihazlar için cihaz hedefi FCM sürümünü tanımlarken:
DEVICE_MANIFEST_FILE
vePRODUCT_ENFORCE_VINTF_MANIFEST
değerlerini tanımlanmamış olarak bırakın.- Hedef FCM sürümü için HAL'leri uygulayın.
- Doğru cihaz manifest dosyasını yazın.
- Hedef FCM sürümünü cihaz manifest dosyasına yazın.
DEVICE_MANIFEST_FILE
değerini ayarlayın.PRODUCT_ENFORCE_VINTF_MANIFEST
değerinitrue
olarak ayarlayın.
Yeni cihazlar kullanıma sunma
Yeni bir cihaz piyasaya sürüldüğünde, cihazın ilk hedef FCM sürümünün belirlenmesi ve cihaz manifestinde üst düzey <manifest>
öğesinde "target-level
" özelliği olarak tanımlanması gerekir.
Örneğin, Android 9 ile kullanıma sunulan cihazlarda hedeflenen FCM sürümü 3'e (şu anda kullanılabilen en yüksek sürüm) eşit olmalıdır. Bunu cihaz manifestinde beyan etmek için:
<manifest version="1.0" type="device" target-level="3"> <!-- ... --> </manifest>
Tedarikçi resmini yükseltme
Tedarikçi firmalar, eski bir cihazın tedarikçi firma resmini yükseltirken yeni HAL sürümlerini uygulamayı ve hedef FCM sürümünü artırmayı seçebilir.
HAL'leri yükseltme
Tedarikçi firmalar, tedarikçi firma resmi yükseltme sırasında HAL adı, arayüz adı ve örnek adı aynı olduğu sürece yeni HAL sürümlerini uygulayabilir. Örneğin:
- Google Pixel 2 ve Pixel 2 XL cihazlar, gerekli ses 2.0 HAL'ini uygulayan hedef FCM sürümü 2 ile kullanıma sunuldu
android.hardware.audio@2.0::IDeviceFactory/default
. - Android 9 ile birlikte yayınlanan ses 4.0 HAL için Google Pixel 2 ve Pixel 2 XL cihazlar,
android.hardware.audio@4.0::IDeviceFactory/default
'ü uygulayan 4.0 HAL'e yükseltmek üzere tam OTA kullanabilir. compatibility_matrix.2.xml
yalnızca ses 2.0'ı belirtse de Android 9 çerçevesi (FCM sürüm 3), işlevsellik açısından ses 4.0'ı ses 2.0 HAL'in yerine kullanabileceği için hedef FCM sürümü 2 olan bir tedarikçi resmiyle ilgili şart gevşetildi.
Özetlemek gerekirse, compatibility_matrix.2.xml
için ses 2.0 ve compatibility_matrix.3.xml
için ses 4.0 gerekli olduğundan şartlar aşağıdaki gibidir:
FCM sürümü (sistem) | Hedef FCM sürümü (tedarikçi firma) | Şartlar |
---|---|---|
2 (8.1) | 2 (8.1) | Audio 2.0 |
3 (9) | 2 (8.1) | Audio 2.0 veya 4.0 |
3 (9) | 3 (9) | Audio 4.0 |
Hedef FCM sürümünü yükseltme
Tedarikçi firmalar, tedarikçi firma resmi yükseltme işlemi sırasında yükseltilen tedarikçi firma resminin çalışabileceği hedef FCM sürümünü belirtmek için hedef FCM sürümünü de artırabilir. Bir cihazın hedef FCM sürümünü yükseltmek için tedarikçi firmaların şunları yapması gerekir:
- Hedef FCM sürümü için gerekli olan tüm yeni HAL sürümlerini uygulayın.
- Cihaz manifest dosyasında HAL sürümlerini değiştirin.
- Cihaz manifest dosyasında hedef FCM sürümünü değiştirin.
- Desteği sonlandırılan HAL sürümlerini kaldırın.
Örneğin, Google Pixel ve Pixel XL cihazlar Android 7.0 ile kullanıma sunulduğundan hedef FCM sürümleri en az eski sürüm olmalıdır. Ancak cihaz manifesti, tedarikçi firma resmi compatibility_matrix.2.xml
ile uyumlu olacak şekilde güncellendiği için hedef FCM sürümünü 2 olarak beyan eder:
<manifest version="1.0" type="device" target-level="2">
Tedarikçiler gerekli tüm yeni HAL sürümlerini uygulamazsa veya desteği sonlandırılan HAL sürümlerini kaldırmazsa hedef FCM sürümü yükseltilemez.
Örneğin, Google Pixel 2 ve Pixel 2 XL cihazlarda hedef FCM sürümü 2'dir.
compatibility_matrix.3.xml
tarafından zorunlu tutulan bazı HAL'leri (ör. ses 4.0, sağlık 2.0 vb.) uygulasalar da FCM sürüm 3'te (Android 9) desteği sonlandırılan android.hardware.radio.deprecated@1.0
'i kaldırmazlar. Bu nedenle, bu cihazlar hedef FCM sürümünü 3'e yükseltemez.
OTA sırasında çekirdek şartlarını zorunlu kılma
Android 9 veya önceki sürümleri çalıştıran cihazları güncelleme
Android 9 veya önceki sürümlerin yüklü olduğu cihazlarda aşağıdaki CL'lerin dikkatlice seçildiğinden emin olun:
Bu değişikliklerle birlikte yapı işareti PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS
kullanıma sunulur ve Android 9 veya daha eski sürümlerle kullanıma sunulan cihazlarda işaret ayarlanmamış olarak bırakılır.
- Android 10'a güncelleme yapılırken Android 9 veya daha eski sürümleri çalıştıran cihazlardaki OTA istemcileri, OTA paketindeki çekirdek gereksinimlerini doğru şekilde kontrol etmiyor. Bu değişiklikler, oluşturulan OTA paketinden çekirdek şartlarını kaldırmak için gereklidir.
-
Android 11'e güncellenirken, güncelleme paketi oluşturulurken VINTF uyumluluğunu kontrol etmek için
PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS
derleme işaretini ayarlamak isteğe bağlıdır.
Bu derleme işareti hakkında daha fazla bilgi için Android 10'dan itibaren cihazları güncelleme başlıklı makaleyi inceleyin.
Android 10 yüklü cihazları güncelleme
Android 10, PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS
adlı yeni bir derleme işareti kullanıma sunar. Android 10 ile kullanıma sunulan cihazlarda bu işaret otomatik olarak true
olarak ayarlanır. İşaretçi true
olarak ayarlandığında, bir komut dosyası, yüklü çekirdek görüntüsünden çekirdek sürümünü ve çekirdek yapılandırmalarını ayıklayıp
- Android 10'a güncelleme yapılırken OTA güncelleme paketi, çekirdek sürümünü ve yapılandırmasını içerir. Android 10 çalıştıran cihazlardaki OTA istemcileri, uyumluluğu kontrol etmek için bu bilgileri okur.
- Android 11'e güncelleme yapılırken OTA paket oluşturma, uyumluluğu kontrol etmek için çekirdek sürümünü ve yapılandırmasını okur.
Komut dosyası, çekirdek imajınız için bu bilgileri alamazsa aşağıdakilerden birini yapın:
- Senaryoyu, çekirdek biçiminizi destekleyecek ve AOSP'ye katkıda bulunacak şekilde düzenleyin.
BOARD_KERNEL_VERSION
değerini çekirdek sürümüne,BOARD_KERNEL_CONFIG_FILE
değerini ise derlenmiş çekirdek yapılandırma dosyasının.config
yoluna ayarlayın. Çekirdek resmi güncellendiğinde her iki değişken de güncellenmelidir.- Alternatif olarak, çekirdek koşullarını kontrol etmeyi atlamak için
PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS
değerinifalse
olarak ayarlayın. Uyumsuzluk gizlendiği ve yalnızca güncellemeden sonra VTS testleri çalıştırıldığında keşfedildiği için bu yöntem önerilmez.
Çekirdek bilgi ayıklama komut dosyasının kaynak kodunu extract_kernel.py
görüntüleyebilirsiniz.