Android-JNI
文章平均质量分 88
efan_
这个作者很懒,什么都没留下…
展开
-
JNI 简介
jni 简介jni的全称就是Java Native Interface,顾名思义,就是Java和C/C++相互通信的接口;jni开发的代码会被编译成so文件,然后在java中加载so文件;so文件加载java 加载so文件主要是两种方式loadlibrary调用 System.loadLibrary(libname) 或 Runtime.getRuntime().lo...原创 2018-06-12 10:45:08 · 849 阅读 · 0 评论 -
ndkbuild 与 cmake
ndkbuild与cmake在 Android 项目中使用 jni 有两种编译方案,一种是传统的ndkbuild,一种是当前推荐使用的 cmake;如果在创建项目的时候选择了 include C++ support 则会创建包含 cmake 的项目模板;两者均是生成 so 包;编译方式gradle 对两种编译方式进行了统一;只需要在 module 下的build.gradl...原创 2018-06-12 10:48:04 · 4383 阅读 · 0 评论 -
JNI_OnLoad 与 JNI_OnUnload
JNI_OnLoadDalvik虚拟机加载C库时,第一件事是调用JNI_OnLoad()函数,所以在JNI_OnLoad()里面进行一些初始化工作,如注册JNI函数等等。注册本地函数,可以加快java层调用本地函数的效率。JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved){ __android_log_print(ANDR...原创 2018-06-12 10:50:11 · 3121 阅读 · 0 评论 -
JNI 静态注册与动态注册
静态注册原理:根据函数名来建立 java 方法与 JNI 函数的一一对应关系;实现流程:编写 java 代码;利用 javah 指令生成对应的 .h 文件;对 .h 中的声明进行实现;弊端:编写不方便,JNI 方法名字必须遵循规则且名字很长;编写过程步骤多,不方便;程序运行效率低,因为初次调用native函数时需要根据根据函数名在JNI层中搜索对应的本地函数,然后...原创 2018-06-12 10:51:10 · 6220 阅读 · 0 评论 -
JNI 字符串操作
NewStringjstring NewString(const jchar* unicodeChars, jsize len){ return functions->NewString(this, unicodeChars, len); }该方法会利用(Unicode) char 数组生成并返回 java String对象;jstring stringFromJNI(JNI...原创 2018-06-12 10:52:09 · 1371 阅读 · 0 评论 -
jni 操作 java 数组
jni操作java数组在 jni 函数中对 java 数组的操作主要包含以下几类:GetArrayLength(jarray array)用于返回 java 数组的数据长度jstring stringFromJNI(JNIEnv *env, jobject thiz, jintArray intArray){ __android_log_print(ANDROID_LOG_...原创 2018-06-12 10:52:49 · 3368 阅读 · 0 评论 -
jni 操作 java 类与对象
jni 操作 java 类DefineClassjclass DefineClass(const char *name, jobject loader, const jbyte* buf,jsize bufLen){ return functions->DefineClass(this, name, loader, buf, bufLen); }从原始类数据的缓冲区加载类;其...原创 2018-06-12 10:53:57 · 2418 阅读 · 0 评论 -
Android-JNI 专题导航
Android 开发中,在计算密集型功能开发(如游戏或物理模拟),或者使用 C 或 C++ 开发一些多端共用的功能时,需要使用到 Android NDK 开发;本专题详细记录了 NDK 开发中 JNI 的相关知识;主要分为以下几个模块,后续更新以及错误纠正均在本文记录;jni 简介: https://blog.csdn.net/qq_20404903/article/detail...原创 2018-06-12 11:10:06 · 187 阅读 · 0 评论