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:
-
DEVICE_MANIFEST_FILE
vePRODUCT_ENFORCE_VINTF_MANIFEST
tanımsız bırakın. - Hedef FCM Sürümü için HAL'leri uygulayın.
- Doğru aygıt bildirim dosyasını yazın.
- Hedef FCM Sürümünü cihaz bildirim dosyasına yazın.
-
DEVICE_MANIFEST_FILE
ayarlayın. -
PRODUCT_ENFORCE_VINTF_MANIFEST
öğesinitrue
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:
- Hedef FCM Sürümü için gerekli tüm yeni HAL Sürümlerini uygulayın.
- Aygıt bildirim dosyasında HAL Sürümlerini değiştirin.
- Aygıt bildirim dosyasında Hedef FCM Sürümünü değiştirin.
- 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 veBOARD_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.