NDK开发小示例(二)

来源:互联网 发布:用java做一个登录界面 编辑:程序博客网 时间:2024/05/16 15:33
1.写native代码用于调用c代码,在java中写
public class JNI {
    static {
        System.loadLibrary("Hello");
    }
    /*
    * 定义native方法
    * 调用c代码对应的方法
    * */


    public native String sayHello();
}


2.编译动态链接库,什么也不配置,编译的动态链接库是以当前的module名称为库名称
lib+modulename+.so
最好是配置动态链接库的名称,在build.gradle中
 defaultConfig {
        applicationId "www.basketi.cn.basketball.ccalljavademo"
        minSdkVersion 15
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
        ndk{
            moduleName ("Hello");
            abiFilters "armeabi", "armeabi-v7a", "x86"
        }
        ndk{
            ldLibs "log"
        }
    }
3.加载动态链接库
 static {
//加载动态链接库
        System.loadLibrary("Hello");
    }
4.写对应的c代码
 java中native去调用c代码
 给含有native方法的类生成头文件,如JNI类,然后根据头文件中的方法,写对应的c代码

c代码
#include <stdio.h>
#include <stdlib.h>
#include <jni.h>
/*
 jstring 返回值
 Java_全类名_方法名
 JNIEnv* env  里面有很多方法
jobject jobj  谁调用了这个方法是谁的实例
*/
jstring Java_www_basketi_cn_basketball_ndkdemo_JNI_sayHello(JNIEnv* env,jobject jobj){
//     jstring     (*NewString)(JNIEnv*, const jchar*);
   char* text="I am from c";
    return (*env)->NewStringUTF(env,text);
}


5.执行java调用c的代码

 String result=new JNI().sayHello();

源码位置:http://download.csdn.net/detail/lzq520210/9733426

0 0
原创粉丝点击