链接器命名空间

链接器命名空间是一种控制共享库搜索路径以及打开目录中库的权限的机制。

框架进程

默认命名空间

搜索路径和允许的路径:

  1. /system/lib[64]
  2. /vendor/lib[64] # 在 Android O 中已弃用(仅适用于旧版模块)

SP-HAL 命名空间

搜索路径和允许的路径:

  1. /vendor/lib[64]/egl
  2. /vendor/lib[64]/hw
  3. /vendor/lib[64]

从其他命名空间导入的共享库:

  • 默认命名空间导出的库:
    • LL-NDK:libc.solibm.solibdl.solibstdc++.soliblog.so, libz.so
    • SP-NDK:libEGL.solibGLESv1_CM.solibGLESv2.solibnativewindow.solibsync.solibvndksupport.so
  • vndk 命名空间导出的库:android.hardware.renderscript@1.0.soandroid.hardware.graphics.allocator@2.0.soandroid.hardware.graphics.mapper@2.0.soandroid.hardware.graphics.common@1.0.solibhwbinder.solibbase.solibcutils.solibhardware.solibhidlbase.solibhidltransport.solibutils.solibc++.so
  • rs 命名空间导出的库:libRS_internal.so

VNDK (VNDK-SP) 命名空间

搜索路径:

  1. /vendor/lib[64]/vndk-sp
  2. /system/lib[64]/vndk-sp
  3. /vendor/lib[64]

允许的路径:

  • /vendor/lib[64]/vndk-sp
  • /system/lib[64]/vndk-sp
  • /vendor/lib[64]
  • /vendor/lib[64]/hw
  • /vendor/lib[64]/egl

从其他命名空间导入的共享库:

  • 默认命名空间导出的库:
    • LL-NDK:libc.solibm.solibdl.solibstdc++.soliblog.so libz.so
    • SP-NDK:libEGL.solibnativewindow.solibsync.solibvndksupport.so

RS 命名空间

此特殊命名空间允许 libRS_internal.so 使用 libmediandk.so,从 SP-HAL 命名空间或 VNDK-SP 命名空间则无法访问此项(这是 Android O 中的一项缓和机制)。

搜索路径:

  1. /vendor/lib[64]/vndk-sp
  2. /system/lib[64]/vndk-sp
  3. /vendor/lib[64]

允许的路径:

  • /vendor/lib[64]/vndk-sp
  • /system/lib[64]/vndk-sp
  • /vendor/lib[64]
  • /data # 共享库由 RS CPU 参考实现进行 JIT 编译

从其他命名空间导入的共享库:

  • 默认命名空间导出的库
    • LL-NDK:libc.solibm.solibdl.solibstdc++.soliblog.so
    • SP-NDK:libEGL.solibGLESv1_CM.solibGLESv2.solibnativewindow.solibsync.solibvndksupport.so
    • 其他库:libmediandk.solibui.so
  • vndk 命名空间导出的库:android.hardware.renderscript@1.0.soandroid.hardware.graphics.allocator@2.0.soandroid.hardware.graphics.mapper@2.0.soandroid.hardware.graphics.common@1.0.solibhwbinder.solibbase.solibcutils.solibhardware.solibhidlbase.solibhidltransport.solibutils.solibc++.so

供应商进程

默认链接器命名空间

搜索路径和允许的路径:

  1. /vendor/lib[64]
  2. /vendor/lib[64]/vndk-sp
  3. /system/lib[64]/vndk-sp
  4. /system/lib[64] # 适用于已退化的 VNDK 库