Android 11 mendukung artefak build snapshot VNDK dan snapshot vendor, yang dapat Anda gunakan untuk membangun vendor.img
terlepas dari versi Android di hierarki sumber. Ini memungkinkan versi campuran gambar, seperti vendor lama dan gambar sistem yang lebih baru.
Versi gambar campuran tidak didukung untuk yang berikut ini.
Android.mk.
Karena Soong menghasilkan snapshot vendor, modul yang didefinisikan diAndroid.mk
tidak diambil sebagai snapshot vendor (modul SoC-proprietary diAndroid.mk
juga tidak dijamin berfungsi).pembersih. Snapshot vendor dan VNDK tidak mendukung pembersih karena varian pembersih harus dibuat secara terpisah.
Tentang snapshot vendor
Snapshot vendor adalah snapshot milik OEM. Ini adalah satu set modul C++ prebuilt yang diinstal di /vendor
tetapi dipertahankan di AOSP. Tanpa mengambil snapshot vendor dari versi Android sebelumnya, memutakhirkan ke versi Android baru dapat merusak partisi vendor karena modul snapshot vendor dapat dihapus atau diubah tanpa kompatibilitas API atau ABI.
Snapshot vendor berisi modul berikut di AOSP.
- Pustaka bersama, statis, dan header dengan
vendor: true
atauvendor_available: true
- Pustaka statis VNDK dengan
vendor_available: true
- File yang dapat dieksekusi dan objek dengan
vendor: true
atauvendor_available: true
Modul di bawah direktori berikut dianggap sebagai kode perangkat keras milik SoC dan diabaikan.
-
device/
-
vendor/
-
hardware/
, kecuali untuk-
hardware/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 di bawah ini 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 flag seperti nama modul, direktori yang diekspor, file
init_rc
, dan filevintf_fragments
. - Direktori
configs
berisi file.rc
dan.xml
dari flaginit_rc
danvintf_fragments
.
Memasang snapshot vendor
Untuk menginstal snapshot vendor, navigasikan ke 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/v VER /$(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 gambar vendor
Dengan menggunakan artefak build snapshot VNDK dan snapshot vendor, Anda dapat membuat vendor.img
terlepas dari versi Android di hierarki sumber, sehingga memungkinkan untuk membuat versi campuran dari gambar. Setelah menginstal snapshot VNDK dan snapshot vendor, setel BOARD_VNDK_VERSION
ke versi vendor. Sebagai contoh:
# BoardConfig.mk
BOARD_VNDK_VERSION := 29
Saat BOARD_VNDK_VERSION
disetel ke nilai selain current
, sistem build:
- Mengaktifkan modul snapshot VNDK dan modul snapshot vendor
BOARD_VNDK_VERSION
. Setiap modul snapshot menimpa modul sumber C++ yang memiliki nama yang sama. - Setel
ro.vndk.version
keBOARD_VNDK_VERSION
. - Menginstal modul snapshot VNDK dari
BOARD_VNDK_VERSION
kesystem_ext
.