Android 11 mendukung build snapshot VNDK
artefak
dan snapshot vendor, yang dapat Anda gunakan untuk membangun vendor.img
Versi Android di hierarki sumber. Hal ini memungkinkan gambar versi campuran, seperti
vendor lama dan image sistem yang lebih baru.
Versi gambar campuran tidak didukung untuk gambar berikut.
Android.mk.
Karena Soong menghasilkan snapshot vendor, modul yang ditentukan diAndroid.mk
tidak diambil sebagai snapshot vendor (modul eksklusif SoC diAndroid.mk
juga tidak dijamin akan berfungsi).Sanitizer. Snapshot vendor dan VNDK tidak mendukung sanitizer sebagai sanitizer varian harus dibuat secara terpisah.
Tentang snapshot vendor
Snapshot vendor adalah snapshot milik OEM. Modul ini terdiri dari modul C++ bawaan
diinstal di /vendor
tetapi dipertahankan di AOSP. Tanpa mendapatkan vendor
snapshot versi Android sebelumnya, mengupgrade ke versi Android baru
mungkin merusak partisi vendor karena modul snapshot vendor dapat dihapus
atau diubah tanpa kompatibilitas API atau ABI.
Snapshot vendor berisi modul berikut di AOSP.
- Library bersama, statis, dan header dengan
vendor: true
atauvendor_available: true
- Library statis VNDK dengan
vendor_available: true
- File objek dan dapat dieksekusi dengan
vendor: true
atauvendor_available: true
Modul pada direktori berikut dianggap sebagai kode hardware milik SoC dan akan diabaikan.
device/
vendor/
hardware/
, kecuali untukhardware/interfaces
hardware/libhardware
hardware/libhardware_legacy
Kode perangkat keras yang dimiliki SoC mungkin juga ada di direktori lain. Saat ini, snapshot vendor tidak mendukung konfigurasi tersebut.
Membuat snapshot vendor
Buat snapshot vendor menggunakan perintah berikut.
. build/envsetup.sh
lunch target
m dist vendor-snapshot
Perintah ini membuat file vendor-$(TARGET_DEVICE).zip
di
$DIST_DIR
. Contoh berikut menunjukkan file zip snapshot vendor:
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
- File JSON berisi tanda seperti nama modul, direktori yang diekspor,
file
init_rc
, danvintf_fragments
file. - Direktori
configs
berisi file.rc
dan.xml
dari tandainit_rc
danvintf_fragments
.
Menginstal snapshot vendor
Untuk menginstal snapshot vendor, buka direktori tujuan dan gunakan perintah berikut.
python3 development/vendor_snapshot/update.py --local $DIST_DIR --install-dir \
vendor/vendor name/vendor_snapshot VER
Perintah ini menghasilkan
/vendor/vendor name/vendor_snapshot/vVER/$(TARGET_ARCH)/Android.bp
.
Contoh berikut menunjukkan struktur direktori snapshot vendor:
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)
Membangun image vendor
Menggunakan build snapshot VNDK
artefak
dan snapshot vendor, Anda dapat membangun vendor.img
, apa pun model Android
di hierarki sumber, sehingga memungkinkan pembuatan berbagai versi
gambar. Setelah menginstal snapshot VNDK dan snapshot vendor,
BOARD_VNDK_VERSION
ke versi vendor. Contoh:
# BoardConfig.mk
BOARD_VNDK_VERSION := 29
Jika BOARD_VNDK_VERSION
disetel ke nilai selain current
, build
sistem:
- Mengaktifkan modul snapshot VNDK dan modul snapshot vendor
BOARD_VNDK_VERSION
. Setiap modul snapshot mengganti modul sumber C++ memiliki nama yang sama. - Menetapkan
ro.vndk.version
keBOARD_VNDK_VERSION
. - Menginstal modul snapshot VNDK dari
BOARD_VNDK_VERSION
kesystem_ext
.