zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    loj 6035 「雅礼集训 2017 Day4」洗衣服
    BZOJ 3251 树上三角形
    UwrhrQNgRh
    百度之星2018资格赛1002题解
    [CF-676B]PYRAMID OF GLASSES
    【CF-371C】Hamburgers
    洛谷P1012拼数——字符串排序
    位运算详解及应用
    NOIP 2014 Day2 T1 无线网络发射器
    写代码要注意的几点(2)
  • 原文地址:https://www.cnblogs.com/chuanwei-zhang/p/3929716.html
Copyright © 2011-2022 走看看