在C代码 中的实现
#include
#include
#include
//回调空参数的方法
JNIEXPORT void JNICALL Java_com_example_jnitest2_NativeProviefder_showStringNative(JNIEnv * env , jobject obj){
// (*FindClass)(JNIEnv*, const char*);
jclass claxx = (*env)->FindClass(env,"com/example/jnitest2/NativeProviefder");
//jmethodID (*GetMethodID)(JNIEnv*, jclass, const char*, const char*);
jmethodID method = (*env)->GetMethodID(env,claxx,"showString","()V");
(*env)->CallVoidMethod(env,obj,method);
}
//回调带int参数的数组
JNIEXPORT void JNICALL Java_com_example_jnitest2_NativeProviefder_addNative(JNIEnv * env , jobject obj){
jclass claxx = (*env)->FindClass(env,"com/example/jnitest2/NativeProviefder");
jmethodID method = (*env)->GetMethodID(env,claxx,"adds","(II)V");
(*env)->CallVoidMethod(env,obj,method,1,2);
}
//回调带String参数的方法
JNIEXPORT void JNICALL Java_com_example_jnitest2_NativeProviefder_printStringNative(JNIEnv * env , jobject obj){
//加载类的字节码
jclass claxx = (*env)->FindClass(env,"com/example/jnitest2/NativeProviefder");
jmethodID method= (*env)->GetMethodID(env,claxx,"printStrings","(Ljava/lang/String;)V");
jstring charst = (*env)->NewStringUTF(env,"yhtjhfhy");
(*env)->CallVoidMethod(env,obj,method,charst);
}
//回调静态方法
JNIEXPORT void JNICALL Java_com_example_jnitest2_NativeProviefder_printStringStaticNative(JNIEnv * env , jobject obj){
//加载类的字节码
jclass claxx = (*env)->FindClass(env,"com/example/jnitest2/NativeProviefder");
jmethodID method= (*env)->GetStaticMethodID(env,claxx,"printStaticStrings","()V");
(*env)->CallVoidMethod(env,obj,method);
}
//调用其他类的方法
//JNIEXPORT void JNICALL Java_com_example_jnitest2_NativeProviefder_printStringStaticNativess
//(JNIEnv * env , jobject obj){
加载类的字节码
//jclass claxx = (*env)->FindClass(env,"com/example/jnitest2/NativeProviefder");
//jmethodID method= (*env)->GetStaticMethodID(env,claxx,"printStaticStrings","()V");
jobject (*AllocObject)(JNIEnv*, jclass);
//jobject mainobi = (*env)->AllocObject(env,"全类名");
//(*env)->CallVoidMethod(env,mainobi,method);
//}
对应的 Android.mk文件中
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := jnitest2
LOCAL_SRC_FILES := jnitest2.c
include $(BUILD_SHARED_LIBRARY)
//适配的机型设置
APP_ABI := x86 armeabi
# 去掉警告
APP_PLATFORM := android-8