Eclipse集成JNI与AndroidNDK操作

Posted wkw1125

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Eclipse集成JNI与AndroidNDK操作相关的知识,希望对你有一定的参考价值。

通过Eclipse中External Tools的配置,集成JNI与NDK繁琐的命令,实现一键操作。

集成JNI操作

配置

在Eclipse中,Run -> External Tools -> External Tools Configuration。对Program右击new,Name命名为JavaH,各选项卡做以下配置:

Main选项卡:

属性说明
LocationC:\\Program Files\\Java\\jdk1.8.0_25\\bin\\javah.exeJDK的javah.exe路径
Working Directory$project_loc\\srcJavaH作用位置(定位)
Arguments-classpath “$project_loc\\bin\\classes;” -d “$project_loc\\jni” -jni “$java_type_name”JavaH相关参数,注意\\bin\\classes;后的分号;

Refresh选项卡:
勾选Refresh resource upon completion,命令完成后刷新工作目录

Common选项卡:
在Display in favorites menu中勾选External Tools,在External Tools显示该功能。

Apply,即可在工具栏External tools中看到JavaH功能。

使用

选中工程中包含native声明的.java文件,点击External tools -> JavaH 就可以自动生成对应的.h文件,位于/jni文件夹。
P.S.
如果对存在引用关系(如继承)的.java文件进行javah命令,需要正确配置好引用文件的位置。将native声明在一个单独的类中可避免这个问题。

集成ndk-build操作

配置

在Eclipse中,Run -> External Tools -> External Tools Configuration。对Program右击new,Name命名为NDK-build,各选项卡做以下配置:

Main选项卡:

属性说明
LocationD:\\sdk\\android-ndk-r13b\\ndk-build.cmdndk-build.cmd脚本路径
Working Directory$project_locndk-build作用位置(定位)

Refresh选项卡:
勾选Refresh resource upon completion,命令完成后刷新工作目录

Common选项卡:
在Display in favorites menu中勾选External Tools,在External Tools显示该功能。

Apply,即可在工具栏External tools中看到NDK-build功能。

使用

在工程\\jni目录下配置好Android.mk文件,放好相关的.c与.h文件;
选中工程,点击External tools -> NDK-build 开始编译,生成.so文件。

EclipseADT中的NDK操作

使用EclipseADT可以通过界面直接使用NDK编译,而不需手动执行ndk-build命令。

EclipseADT中的NDK配置:
打开Eclipse -> Window -> Preferences -> Android -> NDK -> 设置NDK路径(如D:\\sdk\\android-ndk-r13b\\build) -> Apply。

新建一个Android工程NDKTest,在工程上右键点击Android Tools -> Add Native Support…,然后给.so文件取个名字。这时候工程就会多一个jni的文件夹,jni下有Android.mk和NDKTest.cpp文件。Android.mk是NDK工程的Makefile,NDKTest.cpp就是NDK的源文件。

参考

  1. 一键使用NDK交叉编译
  2. Android NDK环境搭建与简单实例

以上是关于Eclipse集成JNI与AndroidNDK操作的主要内容,如果未能解决你的问题,请参考以下文章

22 JNI - 动态注册与JNI线程

Android JNI 高级编程

使用 JNI(更具体地说是 Android NDK)时,Java 是不是通过引用或值传递给 C

Android NDK 从入门到精通

如何将数组从 JNI 返回到 Java?

基于Eclipse的Android JNI层測试应用开发过程记录