《Android框架揭秘》读书笔记——JNI
来源:互联网 发布:鼠标宏编程有啥用 编辑:程序博客网 时间:2024/05/17 23:10
const char *str = (*env)->GetStringUTFChars(string, 0);
fid = env->GetStaticFieldID(clzz, "staticIntField", "I");staticIntField = env->getStaticIntField(clazz, fid);
targetClass = env->FindClass(“JniTest”);mid = env->GetMethodID(targetClass, "<init>", "(I)V");newObject = env->NewObject(targetClass, mid, 100);
targetClass = env->GetObjectClass(newObject);mid = env->GetMethodID(targetClass, "callByNative", "(I)I");result = env->CallIntMethod(newObject, mid, 200);
fid = env->GetFieldID(targetClass, "intField", "I")env->setIntField(newObject, fid, result);
#include <jni.h>int main(){ JNIEnv *env; JavaVM *vm; JavaVMInitArgs vm_args; JavaVMOption options[1]; jint res; jclass cls; jmethodID mid; jstring jstr; jclass stringClass; jobjectArray args; // 生成Java虚拟机选项 options[0].optionString = "-DJava.class.path=." vm_args.versino = 0x00010002; vm_args.options = options; vm_args.nOptions = 1; vm_args.ignoreUnrecognized = JNI_TRUE; // 生成Java虚拟机 res = JNI_CreateJavaVM(&vm, (void**)&env, &vm_args); // 查找并加载类 cls = (*env)->FindClass(env, "InvocationApiTest"); // 获取main()方法的ID mid = (*env)->GetStaticMethodID(env, cls, "main", "([LJava/lang/String;)V"); // 生成字符串对象,用作main()方法的参数 jstr = (*env)->NewString UTF(env, "Hello Invocation API!"); stringClass = (*env)->FindClass(env, "java/lang/String"); args = (*env)->NewObjectArray(env, 1, stringClass, jstr); // 调用main()方法 (*env)->CallStaticVoidMethod(env, cls, mid, args); // 销毁Java虚拟机 (*vm)->DestroyJavaVM(vm);}
#include "jni.h"#include <stdio.h>void printHelloNative(JNIEnv* env, jobject obj);void printStringNative(JNIEnv* env, jobject obj, jstring string);JNIExport jni JNICALL JNI_OnLoad(JavaVM *vm, void * reserved){ JNIEnv* env = NULL; JNINativeMethod nm[2]; jclass cls; jint result = -1; if(vm->GetEnv((void **)&env, JNI_VERSION_1_4) != JNI_OK) { printf("ERROR"); return JNI_ERR; } cls = env->FindClass("HelloJNI"); nm[0].name = "printHello"; nm[0].signature = "()V"; nm[0].fnPtr = (void *)printHelloNative; nm[1].name = "printString"; nm[1].signature = "(Ljava/lang/String;)V"; nm[1].fnPtr = (void *)printStringNative; env->RegisterNatives(cls, nm, 2); return JNI_VERSION_1_4;}
0 0
- 《Android框架揭秘》读书笔记——JNI
- 《Android应用开发揭秘》读书笔记——android学习目录
- ANDROID框架揭秘
- Android框架之JNI
- Android框架基础-JNI
- Android框架基础JNI
- 《Spring揭秘》第二章 读书笔记 —— IoC的基本概念
- 《Spring揭秘》第五章 读书笔记 —— ApplicationContext
- Android——JNI
- Android—Jni初步
- Android JNI编程—JNI基础
- [转载] Android JNI编程—JNI基础
- Android+JNI+Opengl图像应用开发揭秘---序言
- [0]Android框架揭秘-概论
- android jni 程序框架搭建
- spring揭秘(一)——spring框架总体结构
- android jni——helloworld
- 《Spring揭秘》第三章 读书笔记 —— 掌控大局的IoC Service Provider
- 查找表中的重复行
- Sublime text 3最新版破解方法
- java web应用浏览器访问异常ERR_INCOMPLETE_CHUNKED_ENCODING
- JavaScript 对象(一切皆对象)
- 书写博文第一天
- 《Android框架揭秘》读书笔记——JNI
- linux shell 指令 诸如-d, -f, -e之类的判断表达式
- Android 服务之startService和bindService以及前台服务的创建
- MySQL索引使用方法和性能优化
- nf笔记
- hihoCoder 1039 字符消除
- 共享打印机,设置无线打印
- 虚继承原理详解及实例分析
- 前台,js获取选中的下拉框的值