NDK自带的c/c++库
1.官方文档
https://developer.android.google.cn/ndk/guides/stable_apis
https://developer.android.google.cn/ndk/reference
2.简表
libc/libm/libdl | C 库 | - | |
libc++_shared.so/libc++_static.a | c++库,前者动态,后者静态。支持c++17 | - | C++ 库支持 |
liblog | android 日志 | 3 | 日志记录 |
libz | Zlib 压缩库。 | 3 | Zlib 压缩库 |
libGLESv1_CM/libGLESv2/libGLESv3/ | OpenGL ES | OpenGL ES 1.0 - 4 OpenGL ES 2.0 - 5 OpenGL ES 3.0 - 18 OpenGL ES 3.1 - 21 OpenGL ES 3.2 - 24 |
|
libEGL | 9 | EGL 原生平台接口 | |
libvulkan | 高性能三维图形渲染库,低开销、跨平台 | 24 | |
libjnigraphics | 访问 Java Bitmap 库 |
8 | 位图 API 参考文档 |
libsync | 同步api | 26 | 同步 API 参考文档 |
libcamera2ndk | 原生相机 API | 24 | 相机 API 参考文档 |
libmediandk | 媒体 API | - | 媒体 API 参考文档 |
libOpenMAXAL | 基于 Khronos Group OpenMAX AL 1.0.1 API | 14 | |
libandroid |
android平台api,支持的操作如下: |
- | Android NDK API 参考文档 |
libnativewindow | 原生窗口功能 | - | Android NDK API 参考文档 |
<android/hardware_buffer.h> | 硬件缓冲区 API | - | |
libaaudio | 原生音频 API | 26 | AAudio API 指南 |
libOpenSLES | 另一个原生音频库,从api9开始支持pcm | 9 | 面向 Android 的 OpenSL ES 指南 |
libneuralnetworks | 设备端机器学习库 | 27 | 神经网络指南 |
位置在 android/sdk/ndk/22.1.7171670/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/目录下
3.添加方法
3.1 include相应的头文件
3.2 ndk-build
将库添加到 Android.mk 中的 LOCAL_LDLIBS,需要将前导 lib
替换为 -l
如:
LOCAL_LDLIBS := -lz
链接的是libz
3.3 CMake
https://developer.android.google.cn/ndk/guides/cmake
https://developer.android.google.cn/studio/projects/configure-cmake
在CMakeLists.txt里设置,以liblog为例。
第1步:查找 liblog
1 find_library( # Defines the name of the path variable that stores the 2 # location of the NDK library. 3 log-lib 4 5 # Specifies the name of the NDK library that 6 # CMake needs to locate. 7 log )
- 第7行是库的名字,不用以lib开头
- 第3行 给liblog 指定个引用名
第2步:链接
1 # Links your native library against one or more other native libraries. 2 target_link_libraries( # Specifies the target library. 3 native-lib 4 5 # Links the log library to the target library. 6 ${log-lib} )
- 第3行是本jni库的名字
- 第6行是链接到liblog的引用名(上1步中指定的)