VNDK anlık görüntü tasarımı

VNDK anlık görüntüleri, doğru VNDK'yı sağlamak için bir sistem görüntüsü tarafından kullanılabilir sistem ve tedarikçi görüntüleri şuradan derlendiğinde bile tedarikçi firma görüntülerine Android'in farklı sürümleri. VNDK anlık görüntüsü oluşturmak için yakalama gerekir VNDK kitaplıklarını anlık görüntü olarak ve sürüm numarasıyla işaretleme. İlgili içeriği oluşturmak için kullanılan tedarikçi firma görüntüsü, gerekli ABI'leri sağlayan belirli bir VNDK sürümüyle bağlantı verebilir. temsil eder. Ancak, aynı VNDK sürümünde VNDK kitaplıkları ABI kararlılığı.

VNDK anlık görüntü tasarımı, oluşturarak mevcut sistem görüntüsünden bir VNDK anlık görüntüsünün önceden derlenmesi yükleniyor önceden oluşturulmuş kitaplıkları daha yeni bir Android sürümünün sistem bölümüne ekler.

VNDK kitaplıkları hakkında

Kullanıma sunulan HIDL-HAL'ler Android 8.0, sistem ve satıcı bölümleri için ayrı ayrı yükseltme yapılmasına olanak tanır. VNDK Bu kod, belli bir kod için tedarikçi kodunun VNDK'da olmayan kitaplıklarla bağlantı kurar ve satıcıların kullanmasını engeller ayarlandı. Sonuç olarak, tedarikçi firma görüntüsü doğru VNDK'nın tedarikçi firma görüntüsüne sağlanır.

VNDK Çekirdeği

VNDK çekirdekli kitaplık grubu /system/lib[64]/vndk-${VER} ve kullanılabilir yalnızca API düzeyi şuna eşit olan tedarikçi firma işlemleri için: ${VER}. Sistem işlemlerinde bu kitaplıklar kullanılamaz ve bunun yerine /system/lib[64] içinde yüklü kitaplıkları kullanın. Çünkü her işlem için geçerli olan katı ad alanı kısıtlamasını (VNDK çekirdek kitaplıkları) ikili yüklemeye karşı güvenlidir.

VNDK-core'a bir kitaplık eklemek için şunu ekleyin: Android.bp:

vendor_available: true,
vndk: {
    enabled: true,
},
.

VNDK-SP

VNDK-SP kitaplıkları, /system/lib[64]/vndk-sp-${VER} sürümüne yüklendi ve tedarikçi süreçleri ile sistem süreçlerine (SP-HAL üzerinden) kitaplıklarda yüklü olup olmadığını kontrol edin. VNDK-SP kitaplıkları çift yüklemeli.

VNDK-SP'ye bir kitaplık dahil etmek için aşağıdakileri Android.bp öğesine ekleyin:

vendor_available: true,
vndk: {
    enabled: true,
    support_system_process: true,
},

LL-NDK

LL-NDK kitaplıkları /system/lib[64] içinde yüklü. Satıcı modülleri önceden seçilmiş LL-NDK simgelerine erişmek için LL-NDK saplama kitaplıklarını kullanabilir kitaplıklar. LL-NDK kitaplıklarının geriye dönük olarak uyumlu ve ABI'nin kararlı olması gerekir. Satıcı modüllerinin eski sürümlerinin, LL-NDK kitaplıklarının yeni sürümlerini kullanmasını sağlamak. VNDK anlık görüntüsü, LL-NDK'nın ABI'ye göre kararlı özellikleri nedeniyle eski tedarikçi görüntüleri için LL-NDK kitaplıklarının eklenmesine gerek yoktur.

VNDK anlık görüntüleri hakkında

Android 8.1, VNDK içeriyor kaynak koddan oluşturulan kitaplıklar hakkında daha fazla bilgi edinin. Ancak, bu yapılandırmanın sonraki sürümleri için Android için her VNDK sürümü anlık görüntü olarak alınmalı ve eski bir tedarikçi firma görüntüsüne bağlantı oluşturmayı etkinleştirmek için önceden derleyin.

Android 9'dan itibaren Android'in yeni sürümleri Daha eski sürümler için VNDK-core ve VNDK-SP dizinlerinin en az bir anlık görüntüsünü ekleyin Android kaynak kodundaki sürümler. Derleme sırasında, gerekli anlık görüntüler /system/lib[64]/vndk-${VER} ve /system/lib[64]/vndk-sp-${VER} ( (${VER}, tedarikçi firma bölümü) belirten dize değişkenidir. VNDK anlık görüntüsünün sürüm adını temsil eder.

VNDK anlık görüntü kitaplıkları her VNDK sürümü için farklı olabileceğinden, VNDK anlık görüntü, bağlayıcı ad alanı yapılandırmalarını da içerir. etc/ld.config.${VER}.txt, /etc/llndk.libraries.${VER}.txt ve /etc/vndksp.libraries.${VER}.txt.

Örnek: Sistemi ve tedarikçi firmanın sürümünü yükseltme resimler

Anlık görüntü gerekmez; VNDK için ek yapılandırmalar olmadan derleme anlık görüntüler.

Örnek: Yalnızca sistem görüntüsünü yükseltme

Şuna ait VNDK anlık görüntüsünü ve bağlayıcı ad alanı yapılandırma dosyalarını içermelidir: sistem görüntüsündeki tedarikçi firma imajıdır. Bağlayıcı ad alanı yapılandırma dosyaları şurada VNDK kitaplıklarını aramak için otomatik olarak yapılandırılır: /system/lib[64]/vndk-${VER} ve /system/lib[64]/vndk-sp-${VER}.

.
Şekil 1. Yalnızca sistemi yeni sürüme geçirme

Örnek: Sistem görüntüsünü yükseltme, tedarikçi firma görüntüsünde küçük değişiklik

VNDK anlık görüntüsüne göre tedarikçi firma görüntüsü oluşturma henüz desteklenmiyor. Bu nedenle, tedarikçi imajını orijinal kaynak koduyla ayrı olarak derlemeli, sistem görüntüsünü önceki örnekte açıklandığı gibi yeni sürüme geçirin.

VNDK anlık görüntü mimarisi

Bir Android 9 sistem görüntüsünü Android 8.1 tedarikçi firma görüntüsü, Android 8.1 ile eşleşen VNDK anlık görüntüsü Android 9 için tedarikçi firma görüntüsü sağlanmalıdır aşağıdaki gibi sistem görüntüsü:

.
Şekil 2. VNDK anlık görüntü mimarisi

VNDK anlık görüntü tasarımı aşağıdaki yöntemleri içerir:

  • VNDK-core ve VNDK-SP için anlık görüntü oluşturma kitaplıklar. Android 9'da mevcut VNDK derlemesinin anlık görüntüsünü almak için kullanabilirsiniz. Bu komut dosyası tümünü gruplandır /system/lib[64]/vndk-28 ve kütüphaneler /system/lib[64]/vndk-sp-28 bir VNDK anlık görüntüsü olarak kaynak kodu kullanılır; burada 28, Android 9 Anlık görüntü, bağlayıcıyı da içerir /etc/ld.config.28.txt ad alanı yapılandırma dosyaları, /etc/llndk.libraries.28.txt ve /etc/vndksp.libraries.28.txt. Oluşturulan anlık görüntü kullanılacak (Android 9'dan yüksek) kullandığınızdan emin olun.
  • Önceden oluşturulmuş VNDK çekirdek ve VNDK-SP kitaplıklarını anlık görüntü. Android 9'da bir VNDK anlık görüntüsü önceden oluşturulmuş bir VNDK çekirdek kitaplığı ve bir dizi VNDK-SP kitaplığının yanı sıra bağlayıcı ad alanı yapılandırma dosyaları olarak kullanılır. Bir VNDK listesi sağladığınızda derleme sırasında sistem görüntüsünün yüklenecek anlık görüntü sürümleri VNDK anlık görüntü kitaplıkları /system/lib[64]/vndk-${VER} ve /system/lib[64]/vndk-sp-${VER} dizinleri ve bağlayıcı bu VNDK anlık görüntülerinin ad alanı yapılandırma dosyalarını /etc dizini.

VNDK sürüm oluşturma

Her Android sürümü yalnızca bir VNDK anlık görüntüsüne sahiptir ve SDK sürümü VNDK sürümü (VNDK sürümünün 27 gibi bir tam sayı sayısına sahip olduğu anlamına gelir) (Android 8.1 için) bakın. Android sürümü şu durumda olduğunda VNDK sürümü sabittir: yayınlandı. Tedarikçi firma bölümü tarafından kullanılan VNDK sürümü depolandı ro.vndk.version özelliğinde otomatik olarak yer alır. Bu özellik, emin olun. Bu sürüm daha sonra tedarikçi VNDK sürümünü tanımlamak için kullanılır ve ad alanı için VNDK anlık görüntü sürümünü tanımlama yapılandırma.

VNDK kitaplıkları oluşturma

make vndk komutu, bağımlılıklar ve ad alanı dahil olmak üzere vndk: { enabled: true, … } içeren kitaplıklar oluşturur yapılandırma dosyaları. BOARD_VNDK_VERSION := current ayarlanmışsa bu kitaplıklar make komutuyla oluşturulur.

Bu derleme anlık görüntüden VNDK kitaplıklarını yüklemediği için yüklü VNDK kitaplıkları ABI kararlılığında değildir. Ancak Android sürümü yayınlandığında, mevcut VNDK sürümünün ABI'si düzeltilmiştir. Bu noktada ABI arızası bir yapı hatasıdır, bu nedenle Android sürümüne yapılan yamalar VNDK kitaplıkları için ABI'yı değiştirin.