Cihaz Bildirimi Geliştirme,Cihaz Bildirimi Geliştirme

Satıcılar, yeni cihazlar geliştirirken ve piyasaya sürerken, cihaz manifestosunda (DM) Hedef FCM Sürümünü tanımlayabilir ve beyan edebilir. Satıcılar, eski cihazlar için satıcı imajını yükseltirken yeni HAL sürümlerini uygulamayı ve Hedef FCM Sürümünü artırmayı seçebilir.

Yeni cihazlar geliştirmek

Yeni cihazlar için cihazın Hedef FCM Sürümünü tanımlarken:

  1. DEVICE_MANIFEST_FILE ve PRODUCT_ENFORCE_VINTF_MANIFEST tanımsız bırakın.
  2. Hedef FCM Sürümü için HAL'leri uygulayın.
  3. Doğru cihaz bildirim dosyasını yazın.
  4. Hedef FCM Sürümünü cihazın bildirim dosyasına yazın.
  5. DEVICE_MANIFEST_FILE değerini ayarlayın.
  6. PRODUCT_ENFORCE_VINTF_MANIFEST değerini true olarak ayarlayın.

Yeni cihazların piyasaya sürülmesi

Yeni bir cihaz piyasaya sürüldüğünde, başlangıç ​​Hedef FCM Sürümünün, cihaz bildiriminde üst düzey <manifest> öğesinde " target-level " özelliği olarak belirlenmesi ve bildirilmesi gerekir.

Örneğin, Android 9 ile başlatılan cihazların Hedef FCM Sürümü 3'e eşit olmalıdır (şu anda mevcut olan daha yüksek sürüm). Bunu cihaz bildiriminde bildirmek için:

<manifest version="1.0" type="device" target-level="3">
    <!-- ... -->
</manifest>

Satıcı görseli yükseltiliyor

Satıcılar, eski bir cihazın satıcı imajını yükseltirken yeni HAL sürümlerini uygulamayı ve Hedef FCM Sürümünü artırmayı seçebilir.

HAL'leri yükseltme

Satıcı imajı yükseltmesi sırasında satıcılar, HAL adının, arayüz adının ve örnek adının aynı olması koşuluyla yeni HAL sürümlerini uygulayabilir. Örneğin:

  • Gerekli ses 2.0 HAL'yi uygulayan Target FCM Sürüm 2 ile piyasaya sürülen Google Pixel 2 ve Pixel 2 XL cihazları 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'ye yükseltme yapmak için tam OTA kullanabilir.
  • compatibility_matrix.2.xml yalnızca ses 2.0'ı belirtse de, Android 9 çerçevesinin (FCM Sürüm 3) ses 4.0'ı işlevsellik açısından ses 2.0 HAL'nin yerine geçecek bir araç olarak görmesi nedeniyle Target FCM Sürüm 2'ye sahip bir satıcı görüntüsüne olan gereksinim gevşetilmiştir. .

Özetlemek gerekirse, compatibility_matrix.2.xml ses 2.0 gerektirdiği ve compatibility_matrix.3.xml ses 4.0 gerektirdiği göz önüne alındığında gereksinimler aşağıdaki gibidir:

FCM Sürümü (Sistem) Hedef FCM Sürümü (Satıcı) Gereksinimler
2 (8.1) 2 (8.1) Ses 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

Satıcı imajı yükseltmesi sırasında satıcılar, yükseltilen satıcı imajının birlikte çalışabileceği hedeflenen FCM Sürümünü belirlemek için Hedef FCM Sürümünü de artırabilir. Bir cihazın Hedef FCM Sürümünü yükseltmek için satıcıların şunları yapması gerekir:

  1. Hedef FCM Sürümü için gerekli tüm yeni HAL Sürümlerini uygulayın.
  2. Cihaz bildirim dosyasındaki HAL Sürümlerini değiştirin.
  3. Cihaz bildirim dosyasındaki Hedef FCM Sürümünü değiştirin.
  4. Kullanımdan kaldırılan HAL sürümlerini kaldırın.

Örneğin, Android 7.0 ile başlatılan Google Pixel ve Pixel XL cihazları, dolayısıyla Hedef FCM Sürümlerinin en azından eski olması gerekir. Ancak satıcı görüntüsü compatibility_matrix.2.xml ile uyumlu olacak şekilde güncellendiğinden cihaz manifestosu Hedef FCM Sürüm 2'yi bildirir:

<manifest version="1.0" type="device" target-level="2">

Satıcılar gerekli tüm yeni HAL sürümlerini uygulamazsa veya kullanımdan kaldırılan HAL sürümlerini kaldırmazsa Hedef FCM Sürümü yükseltilemez.

Örneğin, Google Pixel 2 ve Pixel 2 XL cihazları, Target FCM Sürüm 2'ye sahiptir. compatibility_matrix.3.xml gerektirdiği bazı HAL'leri (ses 4.0, sağlık 2.0 vb.) uygulasalar da android.hardware.radio.deprecated@1.0 kaldırmazlar. android.hardware.radio.deprecated@1.0 , FCM Sürüm 3'te (Android 9) kullanımdan kaldırılmıştır. Dolayısıyla bu cihazlar Hedef FCM Sürümünü 3'e yükseltemez.

OTA sırasında çekirdek gereksinimlerinin zorunlu kılınması

Android 9 veya daha düşük sürüme sahip cihazları güncelleme

Android 9 veya daha eski sürümlere sahip cihazlarda aşağıdaki CL'lerin özenle seçilmiş olduğundan emin olun:

Bu değişiklikler, PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS derleme işaretini uygulamaya koyar ve Android 9 veya daha düşük sürümle başlatılan cihazlar için işareti ayarlanmamış halde bırakır.

  • Android 10'a güncelleme yaparken, 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, çekirdek gereksinimlerini oluşturulan OTA paketinden çıkarmak için gereklidir.
  • Android 11'e güncelleme yaparken, güncelleme paketi oluşturulduğunda VINTF uyumluluğunu kontrol etmek için PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS derleme bayrağını ayarlamak isteğe bağlıdır.

Bu derleme bayrağı hakkında daha fazla bilgi için bkz. Android 10'dan cihazları güncelleme .

Cihazları Android 10'dan güncelleme

Android 10, yeni bir derleme bayrağı sunuyor: PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS . Android 10 ile başlatılan cihazlarda bu işaret otomatik olarak true değerine ayarlanır. Bayrak true olarak ayarlandığında, bir komut dosyası çekirdek sürümünü ve çekirdek yapılandırmalarını kurulu çekirdek görüntüsünden çıkarır.

  • Android 10'a güncelleme yaparken 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 bilgiyi okur.
  • Android 11'e güncelleme yaparken OTA paketi oluşturma, uyumluluğu kontrol etmek için çekirdek sürümünü ve yapılandırmasını okur.

Komut dosyası, çekirdek görüntünüz için bu bilgiyi çıkaramazsa aşağıdakilerden birini yapın:

  • Komut dosyasını, çekirdek formatınızı destekleyecek ve AOSP'ye katkıda bulunacak şekilde düzenleyin.
  • BOARD_KERNEL_VERSION çekirdek sürümüne ve BOARD_KERNEL_CONFIG_FILE yerleşik çekirdek yapılandırma dosyası .config yoluna ayarlayın. Çekirdek görüntüsü güncellendiğinde her iki değişkenin de güncellenmesi gerekir.
  • Alternatif olarak, çekirdek gereksinimlerini kontrol etmeyi atlamak için PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS değerini false olarak ayarlayın. Herhangi bir uyumsuzluk gizlendiğinden ve yalnızca güncellemeden sonra VTS testleri çalıştırıldığında keşfedildiğinden bu önerilmez.

Çekirdek bilgi çıkarma komut dosyası extract_kernel.py kaynak kodunu görüntüleyebilirsiniz.