Tedarikçi firma anlık görüntüleri oluşturma

Android 11, VNDK anlık görüntü derlemesini destekler yapılar ne olursa olsun vendor.img oluşturmak için kullanabileceğiniz tedarikçi anlık görüntüleri Kaynak ağaçtaki Android sürümü. Bu işlem, resimlerin karma sürümlerini etkinleştirir. hem de yeni bir sistem görüntüsüne sahip olursunuz.

Aşağıdakiler için karma resim sürümleri desteklenmez.

  • Android.mk. Shortg, tedarikçi firma anlık görüntüsünü oluşturduğundan modüller Android.mk, tedarikçi anlık görüntüsü olarak yakalanmaz (SoC'ye ait modüller) Android.mk ürününün çalışacağı garanti edilmez.)

  • Dezenfektan. Tedarikçi firma ve VNDK anlık görüntüleri, dezenfektan olarak dezenfektanı desteklemez varyantlarının ayrı olarak oluşturulması gerekir.

Tedarikçi firma anlık görüntüleri hakkında

Tedarikçi firma anlık görüntüsü, OEM'in sahip olduğu anlık görüntüdür. Bu program, önceden oluşturulmuş C++ modüllerinden oluşur. /vendor ürününde yüklendi ancak AOSP'de korunuyor. Tedarikçiyi yakalamadan yeni Android sürümüne geçme, önceki Android sürümünün anlık görüntüsü tedarikçi anlık görüntü modülleri kaldırılabileceği için tedarikçi firma bölümünü bozabilir ya da API veya ABI uyumluluğu olmadan değiştirilmiştir.

Tedarikçi firma anlık görüntüsü, AOSP'de aşağıdaki modülleri içerir.

  • vendor: true veya vendor_available: true ile paylaşılan, statik ve başlık kitaplıkları
  • vendor_available: true içeren VNDK statik kitaplıkları
  • vendor: true veya vendor_available: true ile yürütülebilir dosyalar ve nesne dosyaları

Aşağıdaki dizinlerde yer alan modüller, SoC'ye ait donanım kodu olarak kabul edilir ve yok sayılır.

  • device/
  • vendor/
  • hardware/, şunlar hariç:
    • hardware/interfaces
    • hardware/libhardware
    • hardware/libhardware_legacy

SoC'ye ait donanım kodları diğer dizinlerde de bulunabilir. Şu anda tedarikçi anlık görüntüleri bu yapılandırmaları desteklemez.

Tedarikçi firma anlık görüntüleri derleyin

Aşağıdaki komutları kullanarak tedarikçi firma anlık görüntüsü oluşturun.

. build/envsetup.sh
lunch target
m dist vendor-snapshot

Bu komutlar vendor-$(TARGET_DEVICE).zip dosyasını kullanarak $DIST_DIR. Aşağıdaki örnekte bir satıcı anlık görüntü 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ında modül adı, dışa aktarılan dizinler, init_rc dosya ve vintf_fragments dosya.
  • configs dizini, init_rc işaretlerinden .rc ve .xml dosyaları içerir ve vintf_fragments.

Tedarikçi firma anlık görüntülerini yükleyin

Tedarikçi firma anlık görüntüsü yüklemek için hedef dizine gidin ve ekleyebilirsiniz.

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 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 derleyin

VNDK anlık görüntü derlemesini kullanma yapılar ve tedarikçi firma anlık görüntüsü için Android'den bağımsız olarak vendor.img sürümünü kullanarak farklı versiyonların karışık sürümlerini resim. Hem VNDK anlık görüntüsünü hem de tedarikçi firma anlık görüntüsünü yükledikten sonra, Tedarikçi firma sürümüne BOARD_VNDK_VERSION. Örnek:

# BoardConfig.mk
BOARD_VNDK_VERSION := 29

BOARD_VNDK_VERSION, current dışında bir değere ayarlandığında derleme sistem:

  • VNDK anlık görüntü modüllerini ve tedarikçi firma anlık görüntü modüllerini etkinleştirir. BOARD_VNDK_VERSION Her anlık görüntü modülü bir C++ kaynak modülünü geçersiz kılar aynı ada sahip.
  • ro.vndk.version değerini BOARD_VNDK_VERSION olarak ayarlar.
  • BOARD_VNDK_VERSION - system_ext VNDK anlık görüntü modüllerini yükler.