#include <jni.h>
#include <android/log.h>
#define TAG "xc"
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,TAG, __VA_ARGS__)
JavaVM *javaVm;//全局JVM
JNIEnv *jniEnv;//全局ENV
jclass globalClass1;//全局Jclass1
jclass globalClass2;//全局Jclass2
jclass jclass1;//全局Jclass1
jclass jclass2;//全局Jclass2
jmethodID jmid1;//全局方法1
jmethodID jmid2;//全局方法1
//方法1 提供给RPC线程HTTP GET调用 出错
void TestFun1(char* Message) {
LOGD("TestFun1");
if (javaVm != NULL){
LOGD("TestFun1 获取JVM成功");
}
if (globalClass1 != NULL){
LOGD("TestFun1 class获取成功");
}
if (jmid1 != NULL){
LOGD("TestFun1 jmid1获取成功");
}
int status = (*javaVm)->AttachCurrentThread(javaVm,&jniEnv,NULL);
LOGD("TestFun1获取JNIENV");
if (status = JNI_OK) {
LOGD("TestFun1获取env成功");
jstring str = (*jniEnv)->NewStringUTF(jniEnv,"Testfun1呼叫");
(*jniEnv)->CallStaticVoidMethod(jniEnv,globalClass1,jmid1,str);
}
}
//初始化成功
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) {
LOGD("JNI_OnLoad 加载");
javaVm = vm;
LOGD("JNI_OnLoadvm 获取完成");
int status = (*vm)->GetEnv(vm, (void **) &jniEnv, JNI_VERSION_1_6);
if (status == JNI_OK)
{
LOGD("JNI_OnLoad 获取env成功");
jclass1 = (*jniEnv)->FindClass(jniEnv,"com/zidong/sotest/MainActivity");
globalClass1=(jclass)(*jniEnv)->NewGlobalRef(jniEnv,jclass1);
jmid1 = (*jniEnv)->GetStaticMethodID(jniEnv,jclass1, "showmessage1", "(Ljava/lang/String;)V");
if (globalClass1 != NULL){
LOGD("JNI_OnLoad class获取成功");
}
if (jmid1 != NULL){
LOGD("JNI_OnLoad jmid1获取成功");
}
//失败
TestFun1("初始化测试调用");
}
return JNI_VERSION_1_6;
}
void JNI_OnUnload(JavaVM* vm, void* reserved) {
LOGD("JNI卸载");
}