本文目的是让你理解VNDK是什么作用,暂不做细节讲解。
在Android 8.0及更高版本中,引入了很多技术都是为了将system和vendor分离。这样设备厂商和芯片供应商只需关心vendor实现。那么vendor实现时要加载framework的库怎么办?VNDK应运而生。
Framework进程不加载vendor库,vendor进程仅加载部分Framework库。
Framework共享库分类:
- LL-NDK库:已知稳定的Framework共享库,它们的开发者致力于保持其 API/ABI 稳定性。包含:
libEGL.so
、libGLESv1_CM.so
、libGLESv2.so
、libGLESv3.so
、libandroid_net.so
、libc.so
、libdl.so
、liblog.so
、libm.so
、libnativewindow.so
、libneuralnetworks.so
、libsync.so
、libvndksupport.so
和libvulkan.so等
。 -
VNDK 库:可以安全复制两次的Framework共享库。Framework模块和供应商模块可以与其各自的库副本相关联,也就是system和vendor下各存一份。
-
框架专用库:Framework专用。
更详细的介绍见android官网:供应商原生开发套件 (VNDK) | Android 开源项目 | Android Open Source Project