Satıcı Anlık Görüntüleri Oluşturma

Android 11, kaynak ağaçtaki Android sürümünden bağımsız olarak vendor.img oluşturmak için kullanabileceğiniz VNDK anlık görüntü oluşturma yapılarını ve 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 versiyonlarına olanak tanır.

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

  • Android.mk. Soong satıcı anlık görüntüsünü oluşturduğundan, Android.mk tanımlanan modüller satıcı anlık görüntüsü olarak yakalanmaz ( Android.mk SoC'ye özel modüllerin de çalışması garanti edilmez).

  • Temizleyici. Satıcı ve VNDK anlık görüntüleri, temizleyici çeşitlerinin ayrı olarak oluşturulması gerektiğinden temizleyiciyi desteklemez.

Satıcı anlık görüntüleri hakkında

Satıcı anlık görüntüsü, OEM'e ait bir anlık görüntüdür. /vendor yüklenen ancak AOSP'de bakımı yapılan, önceden oluşturulmuş bir C++ modülleri kümesidir. Önceki Android sürümünün satıcı anlık görüntüsünü yakalamadan, yeni bir Android sürümüne yükseltme satıcı bölümünü bozabilir çünkü satıcı anlık görüntü modülleri API veya ABI uyumluluğu olmadan kaldırılabilir veya değiştirilebilir.

Bir satıcı 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 yürütülebilir dosyalar ve nesne dosyaları

Aşağıdaki dizinler altındaki modüller, SoC'ye ait donanım kodu olarak kabul edilir ve dikkate alınmaz.

  • device/
  • vendor/
  • hardware/ , hariç
    • hardware/interfaces
    • hardware/libhardware
    • hardware/libhardware_legacy

SoC'ye ait donanım kodları diğer dizinlerde de mevcut olabilir. Şu anda satıcı anlık görüntüleri bu tür yapılandırmaları desteklememektedir.

Satıcı 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.sh
lunch target
m dist vendor-snapshot

Bu komutlar $DIST_DIR konumunda bir 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ı ve vintf_fragments dosyaları gibi işaretler içerir.
  • configs dizini init_rc ve vintf_fragments işaretlerinden .rc ve .xml dosyalarını içerir.

Satıcı anlık görüntülerini yükleme

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/v VER /$(TARGET_ARCH)/Android.bp oluşturur. Aşağıdaki örnek, bir satıcı anlık görüntüsünün dizin yapısını gösterir.

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)

Satıcı görselleri oluşturma

VNDK anlık görüntüsü oluşturma yapıtlarını ve bir satıcı 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şturmayı mümkün kılabilirsiniz. Hem VNDK anlık görüntüsünü hem de satıcı anlık görüntüsünü yükledikten sonra BOARD_VNDK_VERSION satıcının 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 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 BOARD_VNDK_VERSION olarak ayarlar.
  • BOARD_VNDK_VERSION VNDK anlık görüntü modüllerini system_ext yükler.