Yeni cihazlar geliştirip piyasaya sürerken satıcılar, hedef FCM sürümünü cihaz manifestinde (DM) tanımlayıp bildirebilir. Eski cihazlar için satıcı resmini yükseltirken satıcılar 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 FCM'nin hedef cihaz sürümünü tanımlarken:
DEVICE_MANIFEST_FILEvePRODUCT_ENFORCE_VINTF_MANIFEST'yi 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_FILEolarak ayarlayın.PRODUCT_ENFORCE_VINTF_MANIFESTdeğerinitrueolarak ayarlayın.
Yeni cihazları piyasaya sürme
Yeni bir cihaz piyasaya sürüldüğünde, ilk hedef FCM sürümü belirlenmeli ve cihaz manifestinde üst düzey <manifest> öğesindeki "target-level" özelliği olarak bildirilmelidir.
Örneğin, Android 9 ile kullanıma sunulan cihazlarda hedef FCM sürümü 3 olmalıdır (şu anda mevcut olan en yüksek sürüm). Bunu cihaz manifestinde bildirmek için:
<manifest version="1.0" type="device" target-level="3"> <!-- ... --> </manifest>
Sağlayıcı resmini yükseltme
Eski bir cihazın satıcı görüntüsünü yükseltirken satıcılar yeni HAL sürümlerini uygulamayı ve hedef FCM sürümünü artırmayı seçebilir.
HAL'leri yükseltme
Tedarikçiler, tedarikçi resim yükseltmesi 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 Audio 2.0 HAL'nin uygulandığı hedef FCM sürümü 2 ile piyasaya sürüldü
android.hardware.audio@2.0::IDeviceFactory/default. - Android 9 ile yayınlanan audio 4.0 HAL için Google Pixel 2 ve Pixel 2 XL cihazlar,
android.hardware.audio@4.0::IDeviceFactory/defaultuygulayan 4.0 HAL'e yükseltmek için tam OTA kullanabilir. compatibility_matrix.2.xmlyalnızca audio 2.0'ı belirtse de Android 9 çerçevesi (FCM sürümü 3), işlevsellik açısından audio 4.0'ı audio 2.0 HAL'nin yerine geçen bir sürüm olarak kabul ettiğinden hedef FCM sürümü 2 olan bir satıcı görüntüsündeki şartlar gevşetildi.
Özetlemek gerekirse compatibility_matrix.2.xml için ses 2.0, compatibility_matrix.3.xml için ise ses 4.0 gerektiğinden şartlar aşağıdaki gibidir:
| FCM sürümü (sistem) | Hedef FCM sürümü (satıcı) | Şartlar |
|---|---|---|
| 2 (8.1) | 2 (8.1) | Audio 2.0 |
| 3 (9) | 2 (8.1) | Ses 2.0 veya 4.0 |
| 3 (9) | 3 (9) | Ses 4.0 |
Hedef FCM sürümünü yükseltme
Bir satıcı görüntüsü yükseltmesi sırasında satıcılar, yükseltilen satıcı görüntüsünün ç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çilerin şunları yapması gerekir:
- Hedef FCM sürümü için gerekli olan tüm yeni HAL sürümlerini uygulayın.
- Cihaz manifest dosyasındaki 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, Android 7.0 ile kullanıma sunulan Google Pixel ve Pixel XL cihazların hedef FCM sürümü en az eski sürüm olmalıdır. Ancak device
manifest, satıcı resmi compatibility_matrix.2.xml ile uyumlu olacak şekilde güncellendiğinden hedef FCM sürümünü 2 olarak bildirir:
<manifest version="1.0" type="device" target-level="2">
Tedarikçiler gerekli tüm yeni HAL sürümlerini uygulamadığında veya desteği sonlandırılmış HAL sürümlerini kaldırmadığında hedef FCM sürümü yükseltilemez.
Örneğin, Google Pixel 2 ve Pixel 2 XL cihazlarında hedef FCM sürümü 2'dir.
compatibility_matrix.3.xml tarafından gerekli olan bazı HAL'leri (ör. audio 4.0, health 2.0 vb.) uygulasa da FCM sürüm 3'te (Android 9) desteği sonlandırılan android.hardware.radio.deprecated@1.0'yi kaldırmaz. 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 seçildiğinden emin olun:
Bu değişikliklerle PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS oluşturma işareti kullanıma sunulur ve Android 9 veya daha eski sürümlerle kullanıma sunulan cihazlarda PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS işareti ayarlanmaz.
- Android 10'a güncellerken Android 9 veya önceki sürümleri çalıştıran cihazlardaki OTA istemcileri, OTA paketindeki çekirdek gereksinimlerini doğru şekilde kontrol etmez. Bu değişiklikler, oluşturulan OTA paketinden çekirdek gereksinimlerini kaldırmak için gereklidir.
-
Android 11'e güncellerken, güncelleme paketi oluşturulduğunda VINTF uyumluluğunu kontrol etmek için
PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTSderleme işaretini ayarlamak isteğe bağlıdır.
Bu derleme işareti hakkında daha fazla bilgi için Cihazları Android 10'dan güncelleme başlıklı makaleyi inceleyin.
Android 10'dan cihazları güncelleme
Android 10, yeni bir derleme işareti olan PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS işaretini kullanıma sunar. Android 10 ile kullanıma sunulan cihazlarda bu işaret otomatik olarak true olarak ayarlanır. İşaret true olarak ayarlandığında bir komut dosyası, kurulu çekirdek görüntüsünden çekirdek sürümünü ve çekirdek yapılandırmalarını çıkarır.
- Android 10'a güncelleme yaparken OTA güncelleme paketi çekirdek sürümünü ve yapılandırmayı içerir. Android 10 çalıştıran cihazlardaki OTA istemcileri, uyumluluğu kontrol etmek için bu bilgileri okur.
- Android 11'e güncellerken OTA paketi oluşturma, uyumluluğu kontrol etmek için çekirdek sürümünü ve yapılandırmayı okur.
Komut dosyası, çekirdek görüntünüz için bu bilgileri ayıklayamazsa aşağıdakilerden birini yapın:
- Çekirdek biçiminizi desteklemek için komut dosyasını düzenleyin ve AOSP'ye katkıda bulunun.
BOARD_KERNEL_VERSIONdeğerini çekirdek sürümüne,BOARD_KERNEL_CONFIG_FILEdeğerini ise oluşturulan çekirdek yapılandırma dosyası.config'nın yoluna ayarlayın. Çekirdek görüntüsü güncellendiğinde her iki değişken de güncellenmelidir.- Alternatif olarak, çekirdek koşullarının kontrol edilmesini atlamak için
PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTSdeğerinifalseolarak ayarlayın. Bu işlem, uyumsuzluklar gizlendiği ve yalnızca güncellemeden sonra VTS testleri çalıştırıldığında keşfedildiği için önerilmez.
Çekirdek bilgisi çıkarma komut dosyasının kaynak kodunu görüntüleyebilirsiniz
extract_kernel.py.