Android NDK 开发加载本地库 LOCAL_LDLIBS
示例:
LOCAL_LDLIBS := -llog -lz
android-3
C库
C库包含多线程支持,所以不需要指定 -lpthread,也不需要指定 -lrt
注意:内核头文件还没有稳定下来(今后可能变动),这些头文件是
<linux/*.h>
和<asm/*.h>
数学库
LOCAL_LDLIBS += -lm
C++库
不需要指定 -lstdc++,是自动链接的
Android log
Android系统的log功能
LOCAL_LDLIBS += -llog
头文件:<android/log.h>
zlib库
LOCAL_LDLIBS += -lz
头文件:<zlib.h>
和 <zconf.h>
库路径:/system/lib/libz.so,详见:http://www.zlib.net/manual.html
动态连接器库
LOCAL_LDLIBS += -ldl
头文件:<dlfcn.h>
库路径:/system/lib/libdl.so,该库提供的函数例如:dlopen()/dlsym()/dlclose()
android-4
OpenGL ES 1.x
LOCAL_LDLIBS += -lGLESv1_CM.so
头文件:<GLES/gl.h>
和 <GLES/glext.h>
库路径:/system/lib/libGLESv1_CM.so
android-5
OpenGL ES 2.0
LOCAL_LDLIBS += -lGLESv2.so
头文件:<GLES2/gl2.h>
和 <GLES2/gl2ext.h>
库路径:/system/lib/libGLESv2.so
注意:目前模拟器还不支持这个库
android-8
jnigraphics 库
一个小型的C语言库,提供对Java中的 bitmap 对象的操作。
LOCAL_LDLIBS += -ljnigraphics
头文件:<android/bitmap.h>
典型用法:
- a) 用 AndroidBitmap_getInfo() 函数从位图句柄(从JNI得到)获得信息(宽度、高度、像素格式)
- b) 用 AndroidBitmap_lockPixels() 对像素缓存上锁,即获得该缓存的指针。
- c) 用C/C++ 对这个缓冲区进行读写
- d) 用 AndroidBitmap_unlockPixels() 解锁
android-9
OpenSL ES 本地音频库
LOCAL_LDLIBS += -lOpenSLES
头文件:<SLES/OpenSLES.h>
和 <SLES/OpenSLES_Platform.h>
Android共享库
LOCAL_LDLIBS += -landroid -lz -lm
从android-9 开始,就可以完全使用C/C++来编写Android程序了(完全脱离Java)。但是,仍然没有脱离java虚拟机,许多东西还是需要通过jni来访问。
1、活动(Activity)生命期的管理
头文件:<android/native_activity.h>
2、监听事件和传感器
头文件:<android/looper.h>
<android/input.h>
<android/keycodes.h>
<android/sensor.h>
3、窗口管理(包括对像素缓存加锁、解锁)
头文件:<android/rect.h>
<android/window.h>
<android/native_window.h>
<android/native_window_jni.h>
4、资源管理
头文件:<android/configuration.h>
<android/asset_manager.h>
<android/storage_manager.h>
<android/obb.h>
注:
<android/obb.h>
对嵌入 apk中的资源(或OBB文件)进行只读的、直接访问。OBB(Opaque Binary Blob)文件,新特性,允许把较大的数据放在apk之外(对于游戏程序有用)
版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/03/12/android-ndk-development-loads-local-library-local-ldlibs/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论