Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Menghasilkan Snapshot Vendor

Android 11 mendukung artefak build snapshot VNDK dan snapshot vendor, yang bisa Anda gunakan untuk membuat vendor.img apa pun versi Androidnya di pohon sumber. Ini memungkinkan gambar versi campuran, 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 ditentukan di Android.mk tidak diambil sebagai snapshot vendor (modul berpemilik SoC di Android.mk juga tidak dijamin berfungsi).

  • Pembersih. Cuplikan vendor dan VNDK tidak mendukung pembersih karena varian pembersih perlu dibuat secara terpisah.

Tentang snapshot vendor

Snapshot vendor adalah snapshot milik OEM. Ini adalah satu set modul C ++ bawaan yang diinstal di /vendor tetapi dipertahankan di AOSP. Tanpa mengambil snapshot vendor dari versi Android sebelumnya, mengupgrade ke versi Android baru dapat merusak partisi vendor karena modul snapshot vendor dapat dihapus atau diubah tanpa kompatibilitas API atau ABI.

Cuplikan vendor berisi modul berikut di AOSP.

  • Pustaka bersama, statis, dan header dengan vendor: true atau vendor_available: true
  • Pustaka statis VNDK dengan vendor_available: true
  • File yang dapat dieksekusi dan objek dengan vendor: true atau vendor_available: true

Modul di bawah direktori berikut dianggap kode perangkat keras milik SoC dan diabaikan.

  • device/
  • vendor/
  • hardware/ , kecuali untuk
    • hardware/interfaces
    • hardware/libhardware
    • hardware/libhardware_legacy

Kode perangkat keras milik SoC mungkin juga ada di direktori lain. Saat ini, snapshot vendor tidak mendukung konfigurasi seperti itu.

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 tanda seperti nama modul, direktori yang diekspor, file init_rc , dan file vintf_fragments .
  • Direktori configs berisi file .rc dan .xml dari flags init_rc dan vintf_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 bisa membuat vendor.img apa pun versi Androidnya di pohon sumber, sehingga memungkinkan untuk membuat versi campuran gambar. Setelah menginstal snapshot VNDK dan snapshot vendor, setel BOARD_VNDK_VERSION ke versi vendor. Sebagai contoh:

# BoardConfig.mk
BOARD_VNDK_VERSION := 29

Jika BOARD_VNDK_VERSION disetel ke nilai selain current , sistem build:

  • Mengaktifkan modul snapshot VNDK dan modul snapshot vendor BOARD_VNDK_VERSION . Setiap modul snapshot mengganti modul sumber C ++ yang memiliki nama yang sama.
  • Setel ro.vndk.version ke BOARD_VNDK_VERSION .
  • Menginstal modul snapshot VNDK dari BOARD_VNDK_VERSION ke system_ext .