Android NDK 开发加载本地库 LOCAL_LDLIBS

示例:

1
LOCAL_LDLIBS := -llog -lz

android-3

C库

C库包含多线程支持,所以不需要指定 -lpthread,也不需要指定 -lrt

注意:内核头文件还没有稳定下来(今后可能变动),这些头文件是 <linux/*.h><asm/*.h>

数学库

1
LOCAL_LDLIBS += -lm

C++库

不需要指定 -lstdc++,是自动链接的

Android log

Android系统的log功能

1
LOCAL_LDLIBS += -llog

头文件:<android/log.h>

zlib库

1
LOCAL_LDLIBS += -lz

头文件:<zlib.h><zconf.h>
库路径:/system/lib/libz.so,详见:http://www.zlib.net/manual.html

动态连接器库

1
LOCAL_LDLIBS += -ldl

头文件:<dlfcn.h>
库路径:/system/lib/libdl.so,该库提供的函数例如:dlopen()/dlsym()/dlclose()

android-4

OpenGL ES 1.x

1
LOCAL_LDLIBS += -lGLESv1_CM.so

头文件:<GLES/gl.h><GLES/glext.h>
库路径:/system/lib/libGLESv1_CM.so

android-5

OpenGL ES 2.0

1
LOCAL_LDLIBS += -lGLESv2.so

头文件:<GLES2/gl2.h><GLES2/gl2ext.h>
库路径:/system/lib/libGLESv2.so

注意:目前模拟器还不支持这个库

android-8

jnigraphics 库

一个小型的C语言库,提供对Java中的 bitmap 对象的操作。

1
LOCAL_LDLIBS += -ljnigraphics

头文件:<android/bitmap.h>

典型用法:

  • a) 用 AndroidBitmap_getInfo() 函数从位图句柄(从JNI得到)获得信息(宽度、高度、像素格式)
  • b) 用 AndroidBitmap_lockPixels() 对像素缓存上锁,即获得该缓存的指针。
  • c) 用C/C++ 对这个缓冲区进行读写
  • d) 用 AndroidBitmap_unlockPixels() 解锁

android-9

OpenSL ES 本地音频库

1
LOCAL_LDLIBS += -lOpenSLES

头文件:<SLES/OpenSLES.h><SLES/OpenSLES_Platform.h>

Android共享库

1
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之外(对于游戏程序有用)

Powered by AppBlog.CN     浙ICP备14037229号

Copyright © 2012 - 2020 APP开发技术博客 All Rights Reserved.

访客数 : | 访问量 :