Eclipse下用NDK编译生成so文件

我们在安装环境的时候安装了NDK,可以在eclipse下直接生成so文件。NDK的压缩包里面自带了一些sample工程,NDK的文件直接解压到某个目录下即可。

第一次生成so文件的时候,我们先使用NDK的sample下的hello-jni的例子。

1、启动eclipse,通过Create project  from existing source,选择hello-jni的目录,按默认选项创建工程即可;

2、观察hello-jni的工程目录结构,发现根目录下多了一个名叫jni的文件夹,该文件夹下面有两个文件,Android.mk和hello-jni.c。

Android.mk是用来生成so文件的配置文件,我们来看看里面是什么:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := hello-jni

LOCAL_SRC_FILES := hello-jni.c

include $(BUILD_SHARED_LIBRARY)

include $(BUILD_SHARED_LIBRARY)表示会生成一个动态链接库,即so文件,生成的库文件名称为lib*.so

LOCAL_MODULE    := hello-jni表示将要生成一个名称为libhello-jni.so的库文件

LOCAL_SRC_FILES := hello-jni.c表示生成库文件的源文件是hello-jni.c

打开hello-jni.c文件,会看到里面有一个函数:

jstring Java_com_example_hellojni_HelloJni_stringFromJNI(
JNIEnv* env, jobject thiz )

{

return (*env)->NewStringUTF(env, "Hello from JNI !");

}

这个函数从根据什么原则生成的呢?是根据src下的HelloJni.java文件中的函数 public
native String  stringFromJNI();生成的。命名规则为:

Java_(固定开头)com_example_hellojni(用"_"连接的包名)_HelloJni(类名)_stringFromJNI(函数名)

这个函数的生成可以使用javah的命令:用命令行方式进入工程目录的bin\classes目录下,运行javah com.example.hellojni.HelloJni,就会把所有native的函数都按规则生成在一个名为HelloJni.h的头文件里。

3、新建并配置一个新的Builder

1) 点击Project->Properties->Builders->New,新建立一个Builder。在弹出的对话框上面点击Program,点击OK;

2) 在弹出的对话框【Edit Configuration】中,配置选项卡【Main】:

Location中需要填入nkd-build.cmd的路径(NDK安装目录下)。

WorkingDiretcoty中需要填入HelloJni的工程根目录。

3) 在【EditConfiguration】中,配置选项卡【Refresh】:

勾选“Refresh resources upon completion”,

勾选“The entire workspace”,

勾选“Recuresively include sub-folders”。

4)在【EditConfiguration】中,配置选项卡【Build Options】:

勾选“After a “Clean””,

勾选“During manual builds”,

勾选“During auto builds”,

勾选“Specify working set of relevant resources”。

点击“Specify Resources…”勾选TestNDK工程的“jni“目录,Finish!

保存设置,点击OK。

4、生成so文件

由于我们勾选了“During auto builds”,所以在工程有所改变的时候,so文件便会自动编译,正确生成以后就能在工程目录下发现多了两个文件夹,文件夹libs\armeabi目录下生成了一个叫libhello-jni.so的文件。至此,使用NDK生成so文件的工作就完成了。

5、so文件的调用

在HelloJni.java文件中有一段代码:

static {

System.loadLibrary("hello-jni");

}

使用loadLibrary就可以加载该so文件了,加载的时候不需要写libhello-jni.so,只要写hello-jni就可以了。

时间: 2024-10-11 00:33:09

Eclipse下用NDK编译生成so文件的相关文章

Eclipse下用NDK调试C/C++代码碰到 No Symbol table is loaded

被这个问题卡了我3天,终于搞清楚了原因.网上对这个问题也有各种解决方案:有的说需要增加编译参数-g:有的说写个test方法,先调用一下:有的说修改gdb.setup文件,确保是unix回车符.基本都属于胡扯的.先说说环境:Windows 7.Eclipse Juno 4.2.2.CDT 8.1.2.ADT 23.NDK r10d.Python 3.4.不要提什么cygwin,NDK r10d已经不需要它了,改用Python了.搞定这些环境真不易啊,还得FQ才行. 错误描述:整个编译运行没问题的前

Eclipse下用Sublime打开java文件

Mac下关于用External Tools打开java文件的教程 1.新建外部工具 ? ? 2.设置参数: 设置 Location: /usr/bin/open 设置 Arguments: -a /Applications/Sublime\ Text.app "${selected_resource_loc}" 其中关于Open ? 其中注意:[-a <application>] [filenames] [--args arguments]这个命令要看懂(按道理这个方法能用

NDK编译生成so文件

1 首先加载项目 2  进入项目的根目录,输入ndk-build命令 3 如果成功,就会发现项目的libs的mips文件夹下有libplasma.so文件 4 然后运行程序,成功

eclipse下安装插件

最近想自己弄弄Python,手上就有eclipse,也不想在安装别的IDE占空间,就在网上找了一下eclipse支持开发python的插件,果然有. pydev官网地址:http://pydev.org/index.html 最开始安的最新版的PyDev(5.3.1)版本,但是新建py文件后发现总是弹出告诉eclipse版本过低的问题,让更新eclipse或者换低版本的PyDev. 搜了一下原因,jdk1.7,eclipse4.5最好用pydev4.5.5版本的.不想因为它在重新下一个eclip

cygwin+ndk+eclipse下JNI技术入门

1.JNI的编写步骤1)编写带有native 声明的java类.2)编译java文件成class类3)使用javah -jni com.ikags.project.XXXX 编译成.h文件4)使用C/C++编写代码5)编写makefile文件,将.h和.c(.cpp)文件编译成.dll(.so)文件6)将.dll(.so)文件提供给项目,用system.loadLibrary方法调用. 2.编写makefile文件make执行时,自动寻找Makefile(makefile)文件,然后执行编译工作

Linux下Android NDK环境配置以及配合eclipse使用NDK

最近由于项目中经常用到jni,在这里将使用jni不步邹分享给大家! 一.下载NDK http://developer.android.com/sdk/ndk/index.html 目前最新版本是r8(android-ndk-r8-linux-x86.tar.bz2) 二.配置环境 从r7版本开始,Linux下直接解压就可以使用,在windows下cygwin也已经集成在NDK里面了,解压完配置下环境变量就可以使用了. 在~/.bashrc(Linux下配置环境变量的文件)文件末尾加上: expo

Windows下Android+NDK开发环境搭建(JDK[8u45]+Eclipse+Android SDK[r24.1.2]+ADT+NDK[r10d])

一.Android开发环境搭建 1.安装JDK. (1)简介:JDK,即Java Development Kit,是Java语言的软件开发工具包.JRE,即Java Runtime Environment,是Java的运行环境,是面向Java的使用者而非开发者. (2)下载:点击打开链接(Oracle官网),选择对应系统的版本,我下载的是jdk-8u45-windows-i586.exe. (3)安装:双击进行安装,程序刚安装时设置的安装目录为JDK的安装目录,中途需要设置JRE的安装目录.为进

hadoop学习;大数据集在HDFS中存为单个文件;安装linux下eclipse出错解决;查看.class文件插件

sudo apt-get install eclipse 安装后打开eclipse,提示出错 An error has occurred. See the log file /home/pengeorge/.eclipse/org.eclipse.platform_3.7.0_155965261/configuration/1342406790169.log. 查看错误日志然后解决 打开log文件,看到以下的错误 !SESSION 2012-07-16 10:46:29.992 --------

Android NDK 在eclipse中生成C/C++头文件

我们知道在Android NDK开发中,让原生函数名及参数列表与java类文件的原始定义一致是繁杂而多余的,因为JDK自带一个名为javah的命令行工具来执行任务,javah工具可以为原生方法解析Java类文件并生成由原生方法声明组成的头文件.但是在开发中如果来回切换命令终端的话,可以说是很繁琐的,今天的这篇博文就来阐述一下如何在eclipse中生成头文件. (1)打开Eclipse IDE,在顶部菜单栏选择Run|External Tools|External Tools Configurat