Android 11, VNDK anlık görüntü derleme yapılarını ve tedarikçi anlık görüntülerini destekler. Bu yapıları, kaynak ağaçtaki Android sürümünden bağımsız olarak vendor.img
oluşturmak için kullanabilirsiniz. Bu sayede, eski bir tedarikçi ve daha yeni bir sistem resmi gibi karma resim sürümleri oluşturabilirsiniz.
Karışık resim sürümleri aşağıdakiler için desteklenmez.
Android.mk.
Soong, tedarikçi firma anlık görüntüsünü oluşturduğundanAndroid.mk
içinde tanımlanan modüller tedarikçi firma anlık görüntüsü olarak yakalanmaz (Android.mk
içindeki SoC özel modüllerinin de çalışacağı garanti edilmez).Dezenfektan. Dezenfektan varyantlarının ayrı olarak oluşturulması gerektiğinden, tedarikçi firma ve VNDK anlık görüntüleri dezenfektanı desteklemez.
Tedarikçi firma anlık görüntüleri hakkında
Tedarikçi firma anlık görüntüsü, OEM'ye ait bir anlık görüntüdür. /vendor
ürününde yüklü olan ancak AOSP'de yönetilen, önceden oluşturulmuş bir C++ modülü grubudur. Önceki Android sürümünün tedarikçi firma anlık görüntüsünü almadan yeni bir Android sürümüne yükseltme işlemi, tedarikçi firma anlık görüntü modülleri API veya ABI uyumluluğu olmadan kaldırılabileceği veya değiştirilebileceği için tedarikçi firma bölümünü bozabilir.
Tedarikçi anlık görüntüsü, AOSP'deki 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 yoksayılır.
device/
vendor/
- hariç
hardware/interfaces
hardware/libhardware
hardware/libhardware_legacy
hardware/
SoC'ye ait donanım kodları diğer dizinlerde de bulunabilir. Tedarikçi firma anlık görüntüleri şu anda bu tür yapılandırmaları desteklememektedir.
Tedarikçi firma anlık görüntüleri derleyin
Aşağıdaki komutları kullanarak tedarikçi firma anlık görüntüsünü oluşturun.
. build/envsetup.sh
lunch target
m dist vendor-snapshot
Bu komutlar, $DIST_DIR
içinde bir vendor-$(TARGET_DEVICE).zip
dosyası oluşturur. Aşağıdaki örnekte bir tedarikçi firma 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şaretler içerir. configs
dizini,init_rc
vevintf_fragments
işaretlerinden gelen.rc
ve.xml
dosyalarını içerir.
Tedarikçi firma anlık görüntülerini yükleme
Tedarikçi firma 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 tedarikçi firma 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 firma 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
derleyebilirsiniz. Bu sayede, resimlerin 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. Örnek:
# BoardConfig.mk
BOARD_VNDK_VERSION := 29
BOARD_VNDK_VERSION
, current
dışında bir değere ayarlandığında derleme sistemi:
BOARD_VNDK_VERSION
ürününün VNDK anlık görüntü modüllerini ve tedarikçi firma 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.