在java中定義壹個c方法的接口 ,相當於在java代碼中定義了壹個接口 接口的實現方法是C語言實現的。
public native String hello();
步驟二:
實現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");
}
步驟三:
創建android.mk 告訴編譯器 如何把c代碼打包成函數庫
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# 對應打包成函數庫的名字
LOCAL_MODULE := hello
# 對應c代碼的文件
LOCAL_SRC_FILES := Hello.c
include $(BUILD_SHARED_LIBRARY)
步驟四:
把c代碼 打包成函數庫 用到了安裝的環境 到相應目錄下使用ndk-build打包
5
步驟五:
在java代碼中 引入庫函數
static{
System.loadLibrary("hello");// 註意事項 去掉前面的lib 後面的.so
}