Cihaz Manifest Geliştirme

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

Satıcılar, yeni cihazlar geliştirirken ve piyasaya sürerken, cihaz bildiriminde (DM) Hedef FCM Sürümünü tanımlayabilir ve bildirebilir. Satıcılar, eski cihazlar için satıcı görüntüsü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 Hedef FCM Sürümü tanımlanırken:

  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 aygıt bildirim dosyasını yazın.
  4. Hedef FCM Sürümünü cihaz bildirim dosyasına yazın.
  5. DEVICE_MANIFEST_FILE ayarlayın.
  6. PRODUCT_ENFORCE_VINTF_MANIFEST öğesini true olarak ayarlayın.

Yeni cihazların piyasaya sürülmesi

Yeni bir cihaz piyasaya sürüldüğünde, ilk Hedef FCM Sürümünün belirlenmesi ve cihaz bildiriminde üst düzey <manifest> öğesindeki " target-level " özniteliği olarak bildirilmesi gerekir.

Örneğin, Android 9 ile başlatılan cihazlarda 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ı resmi yükseltiliyor

Eski bir cihaz için 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

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

  • Google Pixel 2 ve Pixel 2 XL cihazları, gerekli ses 2.0 HAL'ı uygulayan Target 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'a yükseltmek için tam bir OTA kullanabilir.
  • compatibility_matrix.2.xml yalnızca ses 2.0'ı belirtse de, Android 9 çerçevesi (FCM Sürüm 3), ses 4.0'ı işlevsellik açısından ses 2.0 HAL'nin bir yedeği olarak kabul ettiğinden, Hedef FCM Sürüm 2'ye sahip bir satıcı görüntüsüne ilişkin gereksinim gevşetilmiştir. .

Özetlemek gerekirse, compatibility_matrix.2.xml audio 2.0 gerektirdiğini ve compatibility_matrix.3.xml audio 4.0 gerektirdiğini düşünürsek, 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ükseltilmiş satıcı imajının çalışabileceği hedeflenen FCM Versiyonunu 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 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. Aygıt bildirim dosyasında HAL Sürümlerini değiştirin.
  3. Aygıt bildirim dosyasında Hedef FCM Sürümünü değiştirin.
  4. Kullanımdan kaldırılan HAL sürümlerini kaldırın.

Örneğin, Google Pixel ve Pixel XL cihazları Android 7.0 ile piyasaya sürüldü, bu nedenle Hedef FCM Sürümü en azından eski olmalıdır. Ancak cihaz bildirimi , Satıcı görüntüsü uyumluluk_matrix.2.xml ile compatibility_matrix.2.xml olacak şekilde güncellendiğinden 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 uygulamıyorsa veya kullanımdan kaldırılmış HAL sürümlerini kaldırmıyorsa, 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 uygularken (ses 4.0, sağlık 2.0 vb. gibi), 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. Bu nedenle, bu cihazlar Hedef FCM Sürümünü 3'e yükseltemez.

OTA sırasında zorunlu çekirdek gereksinimleri

Cihazları Android 9 veya önceki sürümlerden güncelleme

Android 9 veya önceki 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 oluşturma işaretini sunar ve Android 9 veya daha eski sürümlerle başlatılan cihazlar için işaret ayarlanmadan bırakılır.

  • Android 10'a güncelleme yaparken, Android 9 veya daha eski sürümleri çalıştıran cihazlarda OTA istemcileri, OTA paketindeki çekirdek gereksinimlerini doğru şekilde kontrol etmez. Bu değişiklikler, oluşturulan OTA paketinden çekirdek gereksinimlerini düşürmek 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 Android 10'dan cihazları güncelleme konusuna bakın.

Cihazları Android 10'dan güncelleme

Android 10, PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS adlı yeni bir derleme bayrağı sunar. Android 10 ile başlatılan cihazlar için bu işaret otomatik olarak true olarak ayarlanır. Bayrak 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ı çı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 bilgileri 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ırmayı okur.

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

  • Komut dosyasını çekirdek biçiminizi desteklemek ve AOSP'ye katkıda bulunmak için düzenleyin.
  • BOARD_KERNEL_VERSION öğesini ç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şken de güncellenmelidir.
  • Alternatif olarak, çekirdek gereksinimlerini kontrol etmeyi atlamak için PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS false olarak ayarlayın. Herhangi bir uyumsuzluk gizli olduğundan 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.