Google is committed to advancing racial equity for Black communities. See how.
Halaman ini diterjemahkan oleh Cloud Translation API.
Switch to English

Namespaces untuk Native Libraries

Android 7.0 memperkenalkan namespace untuk pustaka asli guna membatasi visibilitas API internal dan menyelesaikan situasi ketika aplikasi secara tidak sengaja berakhir menggunakan pustaka platform, bukan miliknya sendiri. Lihat entri blog Meningkatkan Stabilitas dengan Pembatasan Simbol C / C ++ Pribadi di Android 7.0 Android Developers untuk perubahan khusus aplikasi.

Arsitektur

Perubahan tersebut memisahkan pustaka sistem dari pustaka aplikasi dan mempersulit penggunaan pustaka sistem internal secara tidak sengaja (dan sebaliknya).

Namespaces untuk perpustakaan asli

Gambar 1. Namespaces untuk perpustakaan asli

Namespace untuk pustaka asli mencegah aplikasi menggunakan API asli platform pribadi (seperti yang dilakukan dengan OpenSSL). Ini juga menghapus situasi di mana aplikasi secara tidak sengaja berakhir menggunakan pustaka platform, bukan miliknya sendiri (seperti yang disaksikan dengan libpng ).

Menambahkan perpustakaan asli tambahan

Selain pustaka asli publik standar, vendor silikon (mulai dari Android 7.0) dan pabrikan perangkat (mulai dari Android 9) dapat memilih untuk menyediakan pustaka asli tambahan yang dapat diakses oleh aplikasi dengan meletakkannya di bawah folder pustaka masing-masing dan secara eksplisit mencantumkannya di .txt file.

Folder perpustakaan adalah:

  • /vendor/lib (untuk 32-bit) dan /vendor/lib64 (untuk 64-bit) untuk perpustakaan dari vendor silikon
  • /system/lib (untuk 32-bit) dan /system/lib64 (untuk 64-bit) untuk perpustakaan dari produsen perangkat

File .txt tersebut adalah:

  • /vendor/etc/public.libraries.txt untuk perpustakaan dari vendor silikon
  • /system/etc/public.libraries-COMPANYNAME.txt untuk perpustakaan dari produsen perangkat, di mana COMPANYNAME merujuk pada nama produsen (seperti awesome.company ). COMPANYNAME harus cocok dengan [A-Za-z0-9_.-]+ ; karakter alfanumerik, _, . (titik) dan -. Dimungkinkan untuk memiliki beberapa file .txt semacam itu di perangkat jika beberapa pustaka berasal dari penyedia solusi eksternal.

Pustaka asli di partisi system yang dibuat untuk umum oleh produsen perangkat HARUS diberi nama lib*COMPANYNAME.so , misalnya, libFoo.awesome.company.so . Dengan kata lain, libFoo.so tanpa akhiran nama perusahaan TIDAK HARUS dipublikasikan. Nama COMPANYNAME dalam nama file perpustakaan HARUS cocok dengan Nama COMPANYNAME dalam nama file txt di mana nama perpustakaan terdaftar.

Pustaka asli yang merupakan bagian dari AOSP TIDAK HARUS dipublikasikan (kecuali pustaka asli publik standar yang bersifat publik secara default). Hanya pustaka tambahan yang ditambahkan oleh vendor silikon atau produsen perangkat yang dapat diakses oleh aplikasi.

Mulai dari Android 8.0, pustaka publik vendor memiliki batasan tambahan berikut dan penyiapan yang diperlukan:

  1. Pustaka asli di vendor harus diberi label dengan benar sehingga dapat diakses oleh aplikasi. Jika akses diperlukan oleh aplikasi apa pun (termasuk aplikasi pihak ketiga), pustaka harus diberi label same_process_hal_file dalam file file_contexts khusus file_contexts sebagai berikut:
    /vendor/lib(64)?/libnative.so u:object_r:same_process_hal_file:s0
    di mana libnative.so adalah nama pustaka asli.
  2. Library, baik secara langsung atau transitif melalui dependensinya, tidak boleh bergantung pada library sistem selain library VNDK-SP dan LLNDK. Daftar pustaka VNDK-SP dan LLNDK dapat ditemukan di development/vndk/tools/definition/tool/datasets/eligible-list-<version>-release.csv .

Memperbarui aplikasi agar tidak menggunakan perpustakaan asli non-publik

Fitur ini hanya diaktifkan untuk aplikasi yang menargetkan SDK versi 24 atau yang lebih baru; untuk kompatibilitas mundur, lihat Tabel 1. Apa yang diharapkan jika aplikasi Anda ditautkan ke pustaka asli pribadi . Daftar pustaka asli Android yang dapat diakses oleh aplikasi (juga dikenal sebagai pustaka asli publik) tercantum di CDD bagian 3.1.1. Aplikasi yang menargetkan 24 atau lebih baru dan menggunakan perpustakaan non-publik harus diperbarui. Lihat Penautan Aplikasi NDK ke Pustaka Platform untuk mengetahui detail selengkapnya.