jni
逆风Lee
这个作者很懒,什么都没留下…
展开
-
Android NDK笔记12:JNI问题总结
1.warning:Reference to stack memory associated with local variable ‘xxx’ returned//出现这个警告的原因是因为,在方法内返回了局部变量的引用:static PointF* getIntersectPoint(){ PointF pointF = Point(1,1,false); return &pointF;}局部变量是位于stack区的,函数结束后这个地址中的数据将失去意义;我们平时经常会原创 2021-02-24 21:18:12 · 388 阅读 · 0 评论 -
Android NDK笔记10:CMake的一些配置
1.指定so文件的输出目录:有时候要把输入的so文件给其他项目使用,系统默认生成的so文件在build底下,层级很深,所以可以通过配置Cmake文件来指定so文件的输出目录:set(CMAKE_LIBRARY_OUTPUT_DIRECTORY CMAKECURRENTSOURCEDIR/../jniLibTemp/{CMAKE_CURRENT_SOURCE_DIR} /../jniLibTemp/CMAKECURRENTSOURCEDIR/../jniLibTemp/{ANDROID_ABI}原创 2020-11-08 20:09:01 · 362 阅读 · 0 评论 -
Android NDK笔记8:理解静态库与动态库(浅谈静态动态库的区别)
理解静态库与动态库静态库概念静态库是指在我们的应用中,有一些公共代码是需要反复使用,就把这些代码编译为“库”文件;在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中的这种库特点可执行文件中包含了库代码的一份完整拷贝静态库的代码是在编译过程中被载入程序中缺点就是被多次使用就会有多份冗余拷贝动态库(动态链接库)概念动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数特点函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译、链接并与使用它转载 2020-11-08 17:35:23 · 2473 阅读 · 0 评论 -
Android NDK笔记7- extern “C”的作用详解
extern “C”的作用详解extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言(而不是C++)的方式进行编译。由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般只包括函数名。这个功能十分有用处,因为在C++出现以前,很多代码都是C语言写的,而且很底层的库也是C语言写的,为了更好的转载 2020-10-21 22:47:03 · 1029 阅读 · 0 评论 -
Android NDK笔记6-JNI内存泄露问题
在c++中new的对象,如果不返回java,必须用release掉,否则内存泄露。包括NewStringUTF,NewObject。如果返回java不必release,java会自己回收。jstring jstr = env->NewStringUTF((*p).sess_id); ...env->DeleteLocalRef( jstr); jobject jobj = env->NewObject(clazz,midInit);return jobj;内存泄露可以先转载 2020-09-29 11:13:35 · 749 阅读 · 0 评论 -
Android NDK笔记3 -通过c/c++返回HashMap等复杂参数给java
以Hashmap为例子:1.new一个Hashmap://FindClassjclass class_hashmap = (*env)->FindClass(env, "java/util/HashMap");//使用GetMethodID调用初始化方法 jmethodID hashmap_init = (*env)->GetMethodID(env, class_has...原创 2018-03-01 11:38:03 · 1297 阅读 · 0 评论 -
Android NDK笔记3-JNI添加打印信息
开发过程中增加打印信息是必须的,在jni中printf属于linux应用的打印机制,在androd系统当中没有对应的输出机制,只有在终端下执行时才能回显出来,在jni中正确的打印方式应该是 调用NDK 下的log.h 来打印Log 日志,具体方法如下:1.导入log库在build.gradle中加入ldLibs "log":android { defaultConfig {原创 2017-12-05 22:08:04 · 1238 阅读 · 0 评论 -
Android NDK笔记1-NDK配置,你的第一个JNI
总结下Android studio配置NDK的过程,实现你的第一个jni(Java native interface). 下载NDK 1.官方下载地址:https://developer.android.google.cn/ndk/downloads/index.html2.民间下载地址:http://www.androiddevtools.cn/ 选择与自己电脑相匹配包,下载到本地,解压。原创 2017-06-17 12:11:23 · 612 阅读 · 0 评论 -
Android NDK笔记3-JNI的数据类型
转账自:http://blog.csdn.net/mynameishuangshuai/article/details/52584713Java中有两种数据类型,分别是基本数据类型和引用类型。JNI基本数据类型java的基本数据类型可以直接与C/C++的响应基本数据类型映射:这些基本数据类型可以在Native层直接使用。JNI引用类型与基本数据类型不同,引用类型对原生方法是不透明的,它们的内部数据结原创 2017-06-17 16:31:13 · 626 阅读 · 0 评论