java jni android.mk_Android中NDK的搭建及简单使用 Android.mk相关介绍 JNI的使用

Android中NDK的搭建及简单使用:

使用NDK,简述其重要步骤:

1、搭建NDK环境(作用:用于自动生成jni下的.c对应的so文件)---到Android NDK官网或Android官网下载ndk包,环境搭建步骤具体参看http://www.cnblogs.com/yejiurui/p/3476565.html

2、以eclipse为例,在com.test下创建Test2.java文件,会自动在项目的bin\classes\下生成相应的.class文件【若在项目中看不到,则可能当前在eclipse中

查看的是Package Explorer,切换到Navigator即可】如图

33b998b80f121bcf9ad23dd8957e8f4a.png

3、使用命令行切换目录至bin\classes\下,执行javah com_test_Test2,在该目录下生成对应的.h文件

4、在项目根目录下创建名为jni的文件夹(必须为jni),将上述3中生成的.h文件复制到该目录下

5、创建同名的.c文件com_test_Test.c,实现具体的在Test2.java中声明的native方法

6、在jni下创建文件Android.mk,配置具体生成so文件的信息,例如:名称、依赖的源文件(.c)

注意:若有同个.c文件则可以生成一个so文件或分别生成各自的so文件

(1)若生成一个so文件,以空格或Tab键隔开不同的源文件,换行使用 \ ,在Android.mk中信息格式为:

LOCAL_SRC_FILES := com_test_Test2.ccom_test_TestNoNDK.c

换行: LOCAL_SRC_FILES := com_test_Test2.c \ com_test_TestNoNDK.c

如图:

2f6afc75a101bcc6b57d31457edd2aa7.png

(2)若生成不同的so文件,则需要以以下格式为模块:

include $(CLEAR_VARS)

LOCAL_MODULE := TestNDK#生成的so文件的名称

LOCAL_SRC_FILES := com_test_Test2.c #源文件

include $(BUILD_SHARED_LIBRARY)

如图:

e14913d78909eda554896f0bb04d10fe.png

7、上述完成后,会发现在项目的libs目录下有对应的so生成,整个结构如图:

88397e8212dfe32e3012b8a03131aa1f.png

8、在项目中使用时,需要先静态加载库文件

static{

System.loadLibrary("TestNDK");

}

9、加载完成之后,在项目中直接通过类名调用相应的方法即可(因都是静态方法)

上述仅是按照自己的理解简要总结的ndk使用的步骤,详细步骤可参看:http://www.cnblogs.com/yejiurui/p/3476565.html

补充:

Android.mk:

关于mk语法讲解:http://www.cnblogs.com/wainiwann/p/3837936.html

Android.mk中常用的属性含义:http://www.cnblogs.com/welhzh/p/4532142.html

个别含义:LOCAL_MODULE模块必须定义,以表示Android.mk中的每一个模块。名字必须唯一且不包含空格。

Build System会自动添加适当的前缀和后缀。例如,foo,要产生动态库,则生成libfoo.so. 但请注意:如果模块名被定为:libfoo.则生成libfoo.so. 不再加前缀。

------JNI的使用场景:简单的说:JNI是Java平台定义的用于和宿主平台上的本地代码进行交互的“Java标准”,它通常有两个使用场景:

1.使用(之前使用c/c++、delphi开发的)遗留代码;

2.为了更好、更直接地与硬件交互并获得更高性能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值