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.mk
içinde tanımlanan modüller tedarikçi anlık görüntüsü olarak yakalanmaz (Android.mk
iç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: true
veyavendor_available: true
ile paylaşılan, statik ve başlık kitaplıklarıvendor_available: true
içeren VNDK statik kitaplıklarıvendor: true
veyavendor_available: true
iç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/interfaces
hardware/libhardware
hardware/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.sh
lunch target
m 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_rc
dosyaları vevintf_fragments
dosyaları gibi işaretleri içerir. configs
dizini,init_rc
vevintf_fragments
işaretlerinden.rc
ve.xml
dosyaları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 VER
Bu 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_VERSION
iç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
değeriniBOARD_VNDK_VERSION
olarak ayarlar.BOARD_VNDK_VERSION
ilesystem_ext
arasındaki VNDK anlık görüntü modüllerini yükler.