![](https://img-blog.csdnimg.cn/20190918140037908.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
JNI
文章平均质量分 74
Android NDK相关文章
VincentWei95
这个作者很懒,什么都没留下…
展开
-
Android mk文件解析
1 Android.mk文件编译1.1 Android.mk结构// c/c++源文件目录LOCAL_PATH:=$(call my-dir)// 清除环境变量,必须放在LOCAL_PAHT之后,否则无法编译成功include $(CLEAR_VARS)// 编译生成的module名称LOCAL_MODULE:=test// 需要编译的源文件LOCAL_SRC_FILES:...原创 2019-06-21 23:45:33 · 189 阅读 · 0 评论 -
Android Studio配置JNI步骤
在项目目录右键->New->Folder->JNI Folder,生成一个与java目录同级的jni目录在类中声明一个native方法(这里是在MainActivity中声明native方法)public native String getStringFromJNI();在AS的Terminal中使用javah生成头文件(注:javah在java10之后被删除...原创 2019-06-21 23:45:12 · 215 阅读 · 1 评论 -
Android JNI开发系列:第十章 POSIX Socket API 本地通信
1 实现原生本地 Socket Server1.1 创建Socketsocket用一个名为 socket 描述符的整数表示。除了创建socket的函数外,Socket API函数需要有效的socket描述符才能正常工作。可以用 socket 函数来创建socket。// 创建socket成功会返回相关socket描述符,否则返回-1且全局变量errno被相应地设置成错误值int socke...原创 2019-06-22 00:01:30 · 162 阅读 · 0 评论 -
Android JNI开发系列:第九章 POSIX Socket API 无连接的通信
1 实现原生UDP Server1.1 创建一个Socketsocket用一个名为 socket 描述符的整数表示。除了创建socket的函数外,Socket API函数需要有效的socket描述符才能正常工作。可以用 socket 函数来创建socket。// 创建socket成功会返回相关socket描述符,否则返回-1且全局变量errno被相应地设置成错误值int socket(in...原创 2019-06-22 00:01:45 · 194 阅读 · 0 评论 -
Android JNI开发系列:第八章 POSIX Socket API 面向连接的通信
1 实现原生TCP Server1.1 创建一个Socketsocket用一个名为 socket 描述符的整数表示。除了创建socket的函数外,Socket API函数需要有效的socket描述符才能正常工作。可以用 socket 函数来创建socket。// 创建socket成功会返回相关socket描述符,否则返回-1且全局变量errno被相应地设置成错误值int socket(in...原创 2019-06-22 00:01:17 · 203 阅读 · 0 评论 -
Android JNI开发系列:第七章 POSIX线程
POSIX线程也被简称为pthreads,是一个线程的POSIX标准。许多主流操作系统,包括windows、mac、linux提供满足POSIX线程标准的多线程支持。1 在原生代码中使用POSIX线程1.1 头文件通过 pthread.h 头文件声明POSIX Thread APIs。#include <pthread.h>1.2 使用pthread_create创建线程...原创 2019-06-22 00:02:04 · 257 阅读 · 0 评论 -
Android JNI开发系列:第六章 线程
1 同步java中的同步:synchronized(obj) { // 同步安全的代码块}JNI中的同步:if ((*env)->MonitorEnter(env, obj) != JNI_OK) { // 错误处理}// 在MonitorEnter()和MonitorExit()之间是线程同步的// MonitorEnter()和MonitorExit()是成对存在...原创 2019-06-22 00:02:18 · 134 阅读 · 0 评论 -
Android JNI开发系列:第五章 局部和全局引用
JNI支持三种引用:局部引用、全局引用和弱全局引用。1 局部引用大多数JNI函数返回局部引用,在函数中定义的引用在函数执行结束后就自动释放。也可以用 DeleteLocalRef 函数显式释放。jclass clazz;clazz = (*env)->FindClass(env, "java/lang/String");...(*env)->DeleteLocalRef(e...原创 2019-06-22 00:02:33 · 125 阅读 · 0 评论 -
Android JNI开发系列:第四章 异常处理
在java中,当抛出一个异常时,虚拟机停止执行代码块并进入调用栈反向检查能处理特定类型异常的异常处理程序代码块,也就是捕获异常。虚拟机清除异常并将控制权交给异常处理程序。相比之下,JNI要求开发人员在异常发生后显示地实现异常处理流。1 捕获异常public class JavaClass { // 调用throwingMethod()时从JNI中捕获异常 private void thr...原创 2019-06-22 00:02:49 · 127 阅读 · 0 评论 -
Android JNI开发系列:第三章 对引用数据类型的操作
文章目录1 字符串操作1.1 创建字符串1.2 java字符串转换成C字符串1.3 字符串操作demo2 数组操作2.1 创建数组2.2 访问数组元素2.3 对副本操作2.3.1 将java数组复制到C数组中2.3.2 将C数组复制给java数组2.4 对直接指针操作(操作数组元素)2.5 数组操作demo3 NIO操作3.1 创建直接字节缓冲区3.2 获取直接字节缓冲区4 JNI访问java的成...原创 2019-06-22 00:03:07 · 212 阅读 · 0 评论 -
Android JNI开发系列:第二章 数据类型
1 JNI中的基本数据类型JNIJavaC/C++jbooleanbooleanunsigned charjbytebytecharjcharcharunsigned shortjshortshortshortjintintintjlonglonglong longjfloatfloatfloatjdou...原创 2019-06-22 00:03:20 · 161 阅读 · 0 评论 -
Android JNI开发系列:第一章 JNIEnv接口指针
原生代码通过JNIEnv接口指针提供的各种函数来使用虚拟机的功能。JNIEnv是一个指向线程-局部数据的指针,而线程-局部数据中包含指向函数表的指针。注:JNIEnv接口指针在同一个线程中有效,但不能在其他线程中共同使用,否则会出现很多未知问题。1 原生代码C与C++使用JNIEnv的区别原生代码时C与原生代码C++,两种语言在JNI函数的调用上有所不同。C代码中,JNIEnv时指向JNI...原创 2019-10-30 18:27:47 · 212 阅读 · 0 评论 -
Android 注册JNI函数
1 静态注册MediaScanner.javapublic class MediaScanner { static { // 加载对应的JNI库,media_jni是JNI库的名字 // 在实际加载动态库的时候会将其拓展成libmedia_jni.so // 在windows平台上则拓展为media_jni.dll System.loadLibrary("media_jni...原创 2019-06-22 00:11:35 · 167 阅读 · 0 评论