Cihaz manifesti geliştirme

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:

  1. DEVICE_MANIFEST_FILE ve PRODUCT_ENFORCE_VINTF_MANIFEST'yi tanımlanmamış olarak bırakın.
  2. Hedef FCM sürümü için HAL'leri uygulayın.
  3. Doğru cihaz manifest dosyasını yazın.
  4. Hedef FCM sürümünü cihaz manifest dosyasına yazın.
  5. DEVICE_MANIFEST_FILE olarak ayarlayın.
  6. PRODUCT_ENFORCE_VINTF_MANIFEST değerini true olarak 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/default uygulayan 4.0 HAL'e yükseltmek için tam OTA kullanabilir.
  • compatibility_matrix.2.xml yalnı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:

  1. Hedef FCM sürümü için gerekli olan tüm yeni HAL sürümlerini uygulayın.
  2. Cihaz manifest dosyasındaki HAL sürümlerini değiştirin.
  3. Cihaz manifest dosyasında hedef FCM sürümünü değiştirin.
  4. 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_REQUIREMENTS derleme 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_VERSION değerini çekirdek sürümüne, BOARD_KERNEL_CONFIG_FILE değ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_REQUIREMENTS değerini false olarak 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.