在 Android 7.0 及更高版本中,系统库与应用库是分开的。
图1. 原生库的命名空间
原生库的命名空间可防止应用使用私有平台的原生 API(例如使用 OpenSSL)。该命名空间还可以避免应用意外使用平台库(而非它们自己的库)的问题(如使用 libpng
时)。应用库很难意外使用内部系统库(反之亦然)。
除了标准的公共原生库之外,芯片供应商(从 Android 7.0 起)和设备制造商(从 Android 9 起)还可以选择提供可供应用访问的其他原生库,方法是将它们放在相应的库文件夹中,并在 .txt 文件中显式列出它们。
库文件夹是:
/vendor/lib
(对于芯片供应商的 32 位库)和/vendor/lib64
(对于芯片供应商的 64 位库)/system/lib
(对于设备制造商的 32 位库)和/system/lib64
(对于设备制造商的 64 位库)
.txt 文件是:
/vendor/etc/public.libraries.txt
&#