很早使用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中定义的ndkmoduleName一致。

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




更多相关文章

  1. Android(安卓)判断应用 第一次安装启动
  2. Android中文文档:安装SDK
  3. 《Android(安卓)开发工程师面试指南》
  4. Android(安卓)中获取未安装APK的 图标 || icon
  5. Android程序在genymotion模拟器上能够成功安装但无法运行,点击app
  6. Android(安卓)应用安全开发总结
  7. Android(安卓)开发必读:如何成为一名优秀的Android开发者
  8. Android蓝牙开发浅谈
  9. Android(安卓)SDK Manager

随机推荐

  1. Android Studio中的“favorites”和“boo
  2. Android init.rc脚本解析
  3. [Android View 知识体系] 必知必会 View
  4. Android中AlertDialog实现三种对话框
  5. 在Android中如何绘制光滑曲线(二)
  6. retrofit-helper 简洁的封装retrofit,优雅
  7. android——解决部分输入法监听回退键无
  8. android Bitmap位图的使用
  9. android之VideoView和视频播放View的扩展
  10. APK使用命令重新签名