Android Studio NDK JNI开发入门记录

很早使用eclipse+ndk研究过jni开发,当时觉得配置、开发起来很麻烦,现在使用Android Studio开发jni,相对觉得比较容易。


先说明一下开发环境

Mac OS X 10.11

Android Studio 2.0


现在开始一步一步地进行jni开发。

首先,使用AS创建一个project,命名为JniDemo




如果没有安装NDK,安装NDK。 已安装,可略过。

打开项目设置对话框,如果没有安装NDK, 在Android NDK Location位置就会有Download按钮,可下载安装NDK。





新建一个java类EnUtils, 增加两个native方法。如图。



Rebuild Project之后,build/intermediates/classes/debug目录下就会生成 EnUtils.class文件



进入到debug目录下,执行javah命令,就会生成一个头文件 com_martin_jnidemo_EnUtils.h

命令:javah -jni com.martin.jnidemo.EnUtils



src/main目录下,创建jni目录,把之前生成的头文件复制到jni目录下。





在jni目录下,创建c源文件,文件名可随意。

函数实现,如图。 

这一步之后就可以Rebuild Project了,但会出错,依据提示修改gradle即可。




配置gradle

1. 在gradle.properties中增加一行android.useDeprecatedNdk=true

2. 在app的build.gradle的defaultConfig中增加

ndk {
            moduleName "EnUtilsName" //so名字
            abiFilters "armeabi", "armeabi-v7a", "x86", "x86_64"
       }

 






到此为止,再Rebuild Project,就生成了so文件。如图。

接下来就是如何使用调用so库文件了。





在EnUtils类中添加加载so库的代码,名称要和build.gradle中定义的ndk moduleName一致。

static {
    System.loadLibrary("EnUtilsName");
}


调用没有什么特别的,如图。




运行效果




以上是ndk jni开发的步骤。

 下面将要介绍,编译生成的so文件如何单独使用。


1. 删除jni目录,以及目录下的.h .c文件

2. build.gradle中ndk配置也删除掉。




在src/main下创建jniLibs目录,再将ndk/debug/lib下的4个so目录复制到jniLibs目录下。

再重新Clean Project, Rebuild Project即可。




示例代码1,so库开发:http://download.csdn.net/detail/lm1391058/9499676

示例代码2,so库使用:http://download.csdn.net/detail/lm1391058/9499679




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值