您的位置:首页 > 移动开发 > Android开发

Android jni学习

2016-03-12 10:50 239 查看
笔者使用的是eclipse开发环境,ndk环境已搭建好(怎样搭建可百度 so easy)

jni使用流程:

1.随便新建一个Android项目,在项目根目录下创建jni目录,并在目录下建立一个Android.mk文件



Android.mk文件编译如下(双斜杠为注释部分,不用复制):

//编译时的目录,开发树中查找源文件。,宏函数’my-dir’, 由编译系统提供,用于返回当前路径(即包含Android.mk file文件的目录)。

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS) //

//LOCAL_MODULE变量必须定义,以标识你在Android.mk文件中描述的每个模块。名称必须是唯一的,而且不包含任何空格。注意编译系统会自动产生合适的前缀和后缀,换句话说,一个被命名为'foo'的共享库模块,将会生成'libfoo.so'文件。

LOCAL_MODULE := nativeadd //编译后库文件的名称

//LOCAL_SRC_FILES变量必须包含将要编译打包进模块中的C或C++源代码文件。注意,你不用在这里列出头文件和包含文件,因为编译系统将会自动为你找出依赖型的文件;仅仅列出直接传递给编译器的源代码文件就好。【注意,默认的C++源码文件的扩展名是’.cpp’. 指定一个不同的扩展名也是可能的,只要定义LOCAL_DEFAULT_CPP_EXTENSION变量,不要忘记开始的小圆点(也就是定义为‘.cxx’,而不是‘cxx’)(当然这一步我们一般不会去改它)】

LOCAL_SRC_FILES := nativeadd.c //这里写的是需要编译的.c文件

LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
include $(BUILD_SHARED_LIBRARY)

2.在java文件中建立有native方法的类文件:



3.用javah 命令生成c的头文件

这里有两种方法可以实现:

a.eclipse 中配置javah命令



备注:上图中需要配置的三项内容如下:

${system_path:javah}

${workspace_loc}

-v -classpath "${project_loc}/bin/classes" -d "${project_loc}/jni" ${java_type_name}

配置好之后,选中需要本地包含native方法的java类 ,并运行javah命令,刷新jni目录,该目录会多一个.h文件



4.在jni目录建立一个.c文件 实现头文件中的方法



5.命令行中进入jni文件目录,使用ndk-build命令生成.so文件:



成功后,本项目libs目录下会多个.so文件



6.在项目调用native jni方法



完结。

注:其中第三步 javah 命令生成c的头文件

第二种方法,将NativeAdd类在eclipse中导出为jar(主要为了获取.class文件)

并解压到文件到电脑中的任意目录

cd 到该目录,直接使用命令:javah -jni com.zbtx.maize.nativedemo.NativeAdd,即可生成.h文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: