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步中指定的)

浙公网安备 33010602011771号