Android 11, VNDK anlık görüntü derleme yapılarını ve satıcı anlık görüntülerini destekler. Bunları, kaynak ağacındaki Android sürümünden bağımsız olarak vendor.img oluşturmak için kullanabilirsiniz. Bu, eski bir satıcı ve daha yeni bir sistem görüntüsü gibi karışık görüntü sürümlerini etkinleştirir.
Aşağıdaki durumlarda karışık resim sürümleri desteklenmez.
Android.mk.Soong, tedarikçi anlık görüntüsünü oluşturduğundanAndroid.mkiçinde tanımlanan modüller tedarikçi anlık görüntüsü olarak yakalanmaz (Android.mkiçindeki SoC'ye özel modüllerin de çalışacağı garanti edilmez).Dezenfektan. Satıcı ve VNDK anlık görüntüleri, temizleyici varyantlarının ayrı olarak oluşturulması gerektiğinden temizleyiciyi desteklemez.
Tedarikçi anlık görüntüleri hakkında
Tedarikçi anlık görüntüsü, OEM'ye ait bir anlık görüntüdür. /vendor'ya yüklenen ancak AOSP'de tutulan önceden oluşturulmuş C++ modüllerinden oluşur. Önceki Android sürümünün tedarikçi anlık görüntüsü alınmadan yeni bir Android sürümüne yükseltme yapılması, tedarikçi anlık görüntü modülleri API veya ABI uyumluluğu olmadan kaldırılıp değiştirilebileceğinden tedarikçi bölümünün bozulmasına neden olabilir.
Tedarikçi anlık görüntüsü, AOSP'de aşağıdaki modülleri içerir.
vendor: trueveyavendor_available: trueile paylaşılan, statik ve başlık kitaplıklarıvendor_available: trueiçeren VNDK statik kitaplıklarıvendor: trueveyavendor_available: trueiçeren yürütülebilir dosyalar ve nesne dosyaları
Aşağıdaki dizinlerdeki modüller, SoC'ye ait donanım kodu olarak kabul edilir ve yok sayılır.
device/vendor/hardware/,- hariç
hardware/interfaceshardware/libhardwarehardware/libhardware_legacy
SoC'ye ait donanım kodları diğer dizinlerde de bulunabilir. Şu anda, sağlayıcı anlık görüntüleri bu tür yapılandırmaları desteklememektedir.
Tedarikçi anlık görüntüleri oluşturma
Aşağıdaki komutları kullanarak bir tedarikçi anlık görüntüsü oluşturun.
. build/envsetup.shlunch targetm dist vendor-snapshot
Bu komutlar, $DIST_DIR içinde vendor-$(TARGET_DEVICE).zip dosyası oluşturur. Aşağıdaki örnekte bir satıcı anlık görüntüsü ZIP dosyası gösterilmektedir:
vendor-$(TARGET_DEVICE).zip
├── arch-arm64-armv8-a
│ ├── binary -> binary files, *.json files
│ ├── header -> *.json files
│ ├── object -> *.o files, *.json files
│ ├── shared -> *.so files, *.json files
│ └── static -> *.a files, *.json files
├── arch-arm-armv8-a -> (arch-arm64-armv8-a)
├── configs -> *.rc files, *.xml files
├── include -> exported header files (*.h, *.hh, etc.)
└── NOTICE_FILES -> license txt files
- JSON dosyaları; modül adı, dışa aktarılan dizinler,
init_rcdosyaları vevintf_fragmentsdosyaları gibi işaretleri içerir. configsdizini,init_rcvevintf_fragmentsişaretlerinden.rcve.xmldosyalarını içerir.
Sağlayıcı anlık görüntülerini yükleme
Bir satıcı anlık görüntüsünü yüklemek için hedef dizine gidin ve aşağıdaki komutları kullanın.
python3 development/vendor_snapshot/update.py --local $DIST_DIR --install-dir \
vendor/vendor name/vendor_snapshot VERBu komut /vendor/vendor name/vendor_snapshot/vVER/$(TARGET_ARCH)/Android.bp oluşturur.
Aşağıdaki örnekte, bir satıcı anlık görüntüsünün dizin yapısı gösterilmektedir:
vendor/vendor name/vendor_snapshot/
├── v30
│ ├── arm64
│ │ ├── arch-arm64-armv8-a
│ │ │ ├── binary -> (prebuilt libs)
│ │ │ ├── object -> (prebuilt libs)
│ │ │ ├── shared -> (prebuilt libs)
│ │ │ └── static -> (prebuilt libs)
│ │ ├── arch-arm-armv8-a -> (same as above)
│ │ ├── configs -> (config files)
│ │ ├── include -> (exported header files)
│ │ ├── NOTICE_FILES -> (license files)
│ │ └── Android.bp -> (snapshot modules)
│ ├── arm -> (same as above)
│ ├── x86_64 -> (same as above)
│ └── x86 -> (same as above)
└── (other vendor versions) -> (same as above)
Tedarikçi görüntüleri oluşturma
VNDK anlık görüntü derleme
yapılarını
ve bir tedarikçi anlık görüntüsünü kullanarak kaynak ağaçtaki Android sürümünden bağımsız olarak vendor.img oluşturabilir, böylece görüntülerin karışık sürümlerini oluşturabilirsiniz. Hem VNDK anlık görüntüsünü hem de tedarikçi anlık görüntüsünü yükledikten sonra BOARD_VNDK_VERSION değerini tedarikçinin sürümüne ayarlayın. Örneğin:
# BoardConfig.mk
BOARD_VNDK_VERSION := 29
BOARD_VNDK_VERSION, current dışında bir değere ayarlandığında derleme sistemi:
BOARD_VNDK_VERSIONiçin VNDK anlık görüntü modüllerini ve satıcı anlık görüntü modüllerini etkinleştirir. Her anlık görüntü modülü, aynı ada sahip bir C++ kaynak modülünü geçersiz kılar.ro.vndk.versiondeğeriniBOARD_VNDK_VERSIONolarak ayarlar.BOARD_VNDK_VERSIONilesystem_extarasındaki VNDK anlık görüntü modüllerini yükler.