android中如何使用jni调用c代码
1、步骤一:
在java中定义一个c方法的接口 ,相当于在java代码中定义了一个接口 接口的实现方法是C语言实现的。
public native String hello();

2、步骤二:
实现C代码
方法名 严格按照jni的规范
#include <stdio.h>
#include <jni.h>
jstring Java_com_yys_helloworldformc_MainActivity_hello(JNIEnv* env,jobject obj){
// 2 步 实现C代码
// 返回一个java String 类型的字符串
//jstring (*NewStringUTF)(JNIEnv*, const char*);
//(*env) 相当于 JNINativeInterface* JNIEnv
//*(*env) 相当于 JNINativeInterface
///return (**env).NewStringUTF(env,"helloworldfromc");
return (*env)->NewStringUTF(env,"helloworldfromc");
}
3、步骤三:
创建android.mk 告诉编译器 如何把c代码打包成函数库
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# 对应打包成函数库的名字
LOCAL_MODULE := hello
# 对应c代码的文件
LOCAL_SRC_FILES := Hello.c
include $(BUILD_SHARED_LIBRARY)
4、 步骤四:
把c代码 打包成函数库 用到了安装的环境 到相应目录下使用ndk-build打包
5、步骤五:
在java代码中 引入库函数
static{
System.loadLibrary("hello");// 注意事项 去掉前面的lib 后面的.so
}
6、步骤六:
使用方法。