Android与JNI(一) ---- Java调用C 静态调用

第一、通过eclipse新建一个工程名为HelloJni的android工程,并编译。

第二、右键工程-->Android Tools --> Add Native Support,出现如下界面,名字默认就可以了,点击finish。

第三、我们在MainActivity类中加入要调用的native代码

public native String  stringFromJNI();

 以及加入我们要调用的lib库,名字就是上面图中的名字了。

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

第四、用eclipse编译工程,使其在工程bin/classes目录下生成class文件

然后在工程根目录的src执行 

javah -d ../jni com.example.hellojni.MainActivity

其中-d 表示生产目录,这时候jni目录会生产com_example_hellojni_MainActivity.h头文件。

在jni目录下创建com_example_hellojni_MainActivity.c文件,并实现stringFromJNI方法

#include <string.h>
#include <jni.h>
#include "com_example_hellojni_MainActivity.h"

/* This is a trivial JNI example where we use a native method
 * to return a new VM String. See the corresponding Java source
 * file located at:
 *
 *   src/com/example/hellojni/MainActivity.java
 */
jstring Java_com_example_hellojni_MainActivity_stringFromJNI(JNIEnv *env, jobject this)
{
    return (*env)->NewStringUTF(env, "Hello from JNI !");
}

将com_example_hellojni_MainActivity.c添加到jni的Android.mk中,同时删除HelloJni.cpp文件

最后我们添加Toast来显示stringFromJNI返回的文本。

Toast.makeText(getApplicationContext(), str, 90000000).show();

OK,接下去就是编译安装包看下效果了。

工程源码下载:

https://files.cnblogs.com/chuanwei-zhang/HelloJni.zip

 

最后附上一篇非常不错的文章:http://www.cnblogs.com/eddy-he/archive/2012/08/08/2628676.html

 

posted @ 2014-08-22 16:30  沉浮天宝  阅读(800)  评论(0编辑  收藏  举报