Google berkomitmen untuk memajukan ekuitas ras untuk komunitas kulit hitam. Lihat bagaimana.
Halaman ini diterjemahkan oleh Cloud Translation API.
Switch to English

Ekstensi VNDK

Produsen perangkat Android mengubah kode sumber perpustakaan AOSP karena berbagai alasan. Beberapa vendor mengimplementasikan kembali fungsi-fungsi di perpustakaan AOSP untuk meningkatkan kinerja sementara vendor lain menambahkan kait baru, API baru, atau fungsi baru ke perpustakaan AOSP. Bagian ini memberikan pedoman untuk memperluas perpustakaan AOSP dengan cara yang tidak merusak CTS / VTS.

Pengganti drop-in

Semua perpustakaan bersama yang dimodifikasi harus kompatibel-biner , pengganti drop-in dari mitra AOSP mereka. Semua pengguna AOSP yang ada harus dapat menggunakan pustaka bersama yang dimodifikasi tanpa kompilasi ulang. Persyaratan ini menyiratkan hal berikut:

  • Fungsi AOSP tidak harus dihapus.
  • Struktur tidak boleh diubah jika struktur seperti itu diekspos kepada penggunanya.
  • Prasyarat fungsi tidak harus diperkuat.
  • Fungsi harus memberikan fungsi yang setara.
  • Fungsi pasca-kondisi tidak boleh dilemahkan.

Klasifikasi modul yang diperluas

Klasifikasi modul berdasarkan fungsi yang mereka tentukan dan gunakan .

Catatan : Fungsi digunakan di sini daripada API / ABI karena dimungkinkan untuk menambahkan fungsionalitas tanpa mengubah API / ABI.

Bergantung pada fungsi yang didefinisikan dalam modul, modul dapat diklasifikasikan ke dalam DA-Module dan DX-Module :

  • Mendefinisikan-satunya-AOSP Modul (DA-Modul) tidak mendefinisikan fungsi-fungsi baru yang tidak ada dalam rekan AOSP.
    • Contoh 1. Pustaka AOSP yang tidak dimodifikasi secara utuh adalah DA-Module.
    • Contoh 2. Jika vendor menulis ulang fungsi di libcrypto.so dengan instruksi SIMD (tanpa menambahkan fungsi baru), maka libcrypto.so dimodifikasi akan menjadi DA-Module.
  • Defining-Extension Module (DX-Module) mendefinisikan fungsi baru atau tidak memiliki rekanan AOSP.
    • Contoh 1. Jika vendor menambahkan fungsi pembantu ke libjpeg.so untuk mengakses beberapa data internal, maka libjpeg.so dimodifikasi akan menjadi DX-Lib dan fungsi yang baru ditambahkan akan menjadi bagian perpustakaan yang diperluas.
    • Contoh 2. Jika vendor mendefinisikan pustaka non-AOSP bernama libfoo.so , maka libfoo.so akan menjadi DX-Lib.

Bergantung pada fungsi yang digunakan oleh suatu modul, modul dapat diklasifikasikan ke dalam UA-Module dan UX-Module .

  • Menggunakan Modul AOSP saja (Modul UA) hanya menggunakan fungsionalitas AOSP dalam implementasinya. Mereka tidak bergantung pada ekstensi non-AOSP.
    • Contoh 1. Pustaka AOSP yang tidak dimodifikasi secara utuh adalah UA-Module.
    • Contoh 2. Jika libjpeg.so perpustakaan bersama yang dimodifikasi hanya bergantung pada API AOSP lainnya, maka itu akan menjadi UA-Module.
  • Menggunakan-Extension Modul (UX-Module) mengandalkan beberapa fungsi non-AOSP dalam implementasinya.
    • Contoh 1. Jika libjpeg.so dimodifikasi mengandalkan libjpeg.so non-AOSP lain bernama libjpeg_turbo2.so , maka libjpeg.so dimodifikasi akan menjadi Modul-UX.
    • Contoh 2. Jika vendor menambahkan fungsi baru ke libexif.so dimodifikasi dan libexif.so dimodifikasi. libjpeg.so menggunakan fungsi yang baru ditambahkan dari libexif.so , maka libjpeg.so dimodifikasi akan menjadi Modul-UX.

Definisi dan penggunaan saling independen:

Fungsi yang Digunakan
Hanya AOSP (UA) Extended (UX)
Fungsi yang Ditentukan Hanya AOSP (DA) DAUA DAUX
Extended (DX) DXUA DXUX

Mekanisme ekstensi VNDK

Modul vendor yang mengandalkan fungsionalitas yang diperluas tidak akan berfungsi karena pustaka AOSP dengan nama yang sama tidak memiliki fungsionalitas yang diperluas. Jika modul vendor secara langsung atau tidak langsung bergantung pada fungsionalitas yang diperluas, vendor harus menyalin perpustakaan bersama DAUX, DXUA, dan DXUX ke partisi vendor (proses vendor selalu mencari perpustakaan bersama di partisi vendor terlebih dahulu). Namun, perpustakaan LL-NDK tidak boleh disalin, sehingga modul vendor tidak harus bergantung pada fungsionalitas diperluas yang ditentukan oleh perpustakaan LL-NDK yang dimodifikasi.

Pustaka bersama DAUA dapat tetap berada di partisi sistem jika pustaka AOSP yang sesuai dapat menyediakan fungsionalitas yang sama dan modul vendor terus bekerja ketika partisi sistem ditimpa oleh Generic System Image (GSI).

Penggantian drop-in penting karena pustaka VNDK yang tidak dimodifikasi di GSI akan terhubung dengan pustaka bersama yang dimodifikasi pada tabrakan nama. Jika pustaka AOSP dimodifikasi dengan cara yang tidak kompatibel dengan API / ABI, pustaka AOSP di GSI mungkin gagal menghubungkan atau menghasilkan perilaku yang tidak ditentukan.