直接上代码
**
* 依据JavaVM获取JNIEnv对象
* @param vm
* @param attach
* @return
*/
JNIEnv *get_env(JavaVM *vm, int *attach) {
if (vm == NULL) return NULL;
*attach = 0;
JNIEnv *jni_env = NULL;
int status = vm->GetEnv((void **) &jni_env, JNI_VERSION_1_6);
if (status == JNI_EDETACHED || jni_env == NULL) {
status = vm->AttachCurrentThread(&jni_env, NULL);
if (status < 0) {
jni_env = NULL;
} else {
*attach = 1;
}
}
return jni_env;
}
jint del_env(JavaVM *vm) {
return vm->DetachCurrentThread();
}
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) {
int attach = 0;
JNIEnv *env = get_env(vm, &attach);
//apk签名校验
is_init_success = checkApkSign(env);
if (attach == 1) {
del_env(vm);
}
return JNI_VERSION_1_4;
}