Android 11, VNDK anlık görüntü derleme
yapılarını ve kaynak ağaçtaki Android sürümünden bağımsız olarak vendor.img oluşturmak için kullanabileceğiniz satıcı anlık görüntülerini destekler. Bu, eski bir satıcı ve daha yeni bir sistem görüntüsü gibi görüntülerin karışık sürümlerini etkinleştirir.
Aşağıdaki öğeler için 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 çalışacağı da garanti edilmez).Dezenfektan. Tedarikçi ve VNDK anlık görüntüleri, temizleyiciyi desteklemez. Bunun nedeni, temizleyici varyantlarının ayrı olarak oluşturulması gerekmesidir.
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şan bir settir. Ö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ılabilir ya da değiştirilebilir olduğundan 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 satıcı 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şaretler 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 karma 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.versionöğesiniBOARD_VNDK_VERSIONolarak ayarlar.BOARD_VNDK_VERSIONilesystem_extarasındaki VNDK anlık görüntü modüllerini yükler.