![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android jni
ccbuluo
软件学习者。。
展开
-
Android JNI开发详解(7)-线程操作,异常处理
线程操作JNIEnv指针仅在创建它的线程有效。C/C++创建的线程默认是没有附加到JVM的,如果我们需要在本地线程线程访问JVM,那么必须先调用AttachCurrentThread将当前线程与JVM进行关联,然后才能获得JNIEnv对象。线程退出或不再需要使用JNIEnv时,我们必须通过调用DetachCurrentThread来解除连接,否则可能会导致线程不能正常退出或程序奔溃等问题。函数说明AttachCurrentThread将当前线程附件到JVMDetachCurr原创 2020-05-24 15:36:14 · 195 阅读 · 0 评论 -
Android JNI开发工具篇(1)-开发环境搭建
原文出处:http://www.ccbu.cc/index.php/android/android-jni-dev-env.html工欲善其事,必先利其器。1. 开发环境准备搭建开发环境是我们进行开发前首先要完成的任务,进行Android jni开发,依赖的基本开发环境包括:Android sdkandroid ndkcmakeandroid studioAndroid studio的sdk manager已经包括了上面所说的sdk,ndk,cmake等工具的安装,所以一般只用下载and原创 2020-05-24 11:54:33 · 505 阅读 · 0 评论 -
Android JNI开发详解(6)-对象操作
原文出处:http://www.ccbu.cc/index.php/android/android-jni-object-operate.html1. 对象操作基本步骤Jni是沟通Java世界和Native世界的纽带,Java层调用本地方法只用调用Java中定义的本地(native)方法就可用了,那么,本地的C/C++代码如何调用Java层的代码呢?这就是本章节对象操作要解决阐述的内容。一般的,C/C++层要调用Java层代码,需要进行以下步骤。获取Java层对应的jclass,通过jclass来原创 2020-05-24 11:49:01 · 556 阅读 · 0 评论 -
Android JNI开发详解(5)-引用篇
原文出处:http://www.ccbu.cc/index.php/android/android-jni-ref.html在JNI规范中定义了三种引用:局部引用(Local Reference)、全局引用(Global Reference)、弱全局引用(Weak Global Reference)。1. 局部引用1.1 局部引用通过NewLocalRef和各种JNI接口创建(FindClass、NewObject、GetObjectClass和NewCharArray等)。会阻止GC回收所引用的对原创 2020-05-24 11:47:23 · 343 阅读 · 0 评论 -
Android JNI开发详解(4)-数据操作
原文出处:http://www.ccbu.cc/index.php/android/android-jni-data-operation.html在前面关于JNI介绍的文章中我们知道,Java层和Navice层是两个世界,而JNI正是为了这个两个世界能够友好的相互沟通而设计的。既然是不同的两个世界,所有他们各自的数据类型定义也是不一样的,Java层和Native层都有自己的数据类型,在JNI中,这些数据类型又可以分为基本数据类型和引用数据类型,其中,基本数据类型是可以直接相互转换的,而引用数据类型则需要进原创 2020-05-24 11:44:41 · 378 阅读 · 0 评论 -
Android JNI开发详解(3)-JavaVM和JNIEnv
原文出处:http://www.ccbu.cc/index.php/android/android-jni-jnivm-jnienv.htmlJavaVM 和 JNIEnvJNI 定义了两个关键数据结构,即JavaVM和JNIEnv。两者本质上都是指向函数表的二级指针。在 C++ 版本中,它们是一些类,这些类具有指向函数表的指针,并具有每个通过该函数表间接调用的 JNI 函数的成员函数。1. JavaVMJavaVM是虚拟机在JNI中的表示,一个JVM中只有一个JavaVM对象,这个对象是线程共享的原创 2020-05-24 11:41:43 · 577 阅读 · 0 评论 -
Android JNI开发详解(1)-JNI开发介绍
原文出处:http://www.ccbu.cc/index.php/android/android-jni-intro.html什么是JNIJNI是Java Native Interface的缩写,中文译为“Java本地接口”,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)进行相互调用,从Java1.1开始,JNI标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。所以,JNI技术是JAVA与本地世界的通信桥梁,通过这种技术可以做到以下两点:原创 2020-05-24 11:33:57 · 398 阅读 · 0 评论 -
Android JNI开发详解(2)-函数注册
原文出处:http://www.ccbu.cc/index.php/android/android-jni-function-register.html1. JNI开发流程创建Native C++工程,这部分可用参考[Android JNI开发详解(2)-开发环境搭建](Android JNI开发工具篇(1)-开发环境搭建.md)创建Java层本地接口调用类,并定义好相应的本地函数。将Java源代码编译成class字节码文件(Android studio会自动生成)。创建对应的本地原创 2020-05-24 11:37:56 · 265 阅读 · 0 评论