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
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
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ı vevintf_fragments
dosyaları gibi işaretler içerir. -
configs
diziniinit_rc
vevintf_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üllerinisystem_ext
yükler.