• 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,接下去就是编译安装包看下效果了。

    工程源码下载:

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

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

  • 相关阅读:
    理解MapReduce计算构架
    熟悉HBase基本操作
    爬虫大作业
    熟悉常用的HDFS操作
    数据结构化与保存
    使用正则表达式,取得点击次数,函数抽离
    爬取校园新闻首页的新闻
    网络爬虫基础练习
    课后作业-阅读任务-阅读提问-5
    课后作业-阅读任务-阅读提问-4
  • 原文地址:https://www.cnblogs.com/chuanwei-zhang/p/3929716.html
Copyright © 2020-2023  润新知