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

  • 相关阅读:
    爬虫项目数据解析方式
    数据分析
    爬虫项目代理操作和线程池爬取
    Python网络爬虫
    Django多表操作
    网络编程
    python中什么是元类
    Python面向对象中super用法与MRO机制
    mysql之pymysql
    mysql之索引原理
  • 原文地址:https://www.cnblogs.com/chuanwei-zhang/p/3929716.html
Copyright © 2011-2022 走看看