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

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ğundan Android.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 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 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/
    • hardware/interfaces
    • hardware/libhardware
    • hardware/libhardware_legacy

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ı ve vintf_fragments dosyaları gibi işaretler içerir.
  • configs dizini, init_rc ve vintf_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ğerini BOARD_VNDK_VERSION olarak ayarlar.
  • BOARD_VNDK_VERSION ile system_ext arasındaki VNDK anlık görüntü modüllerini yükler.