
Android jni
李国菁LGJ
一名小菜鸟,需要大神提携
展开
-
jni编写操作步骤
1.下载NDK、解压 2.配置环境变量 3.生成头文件,进到java目录下,执行javah 包名+类名 4.在main目录下,建立jni目录,创建Android.mk 文件和.c文件 Android.mk 文件一般为:LOCAL_PATH := (callmy−dir)include(callmy−dir)include(call my-dir) ...原创 2018-09-11 14:31:41 · 572 阅读 · 0 评论 -
jni 中简单用法
java 调用c ,c回调java #include <stdio.h> #include <android/log.h> #include <string.h> #include <stdlib.h> #include <jni.h> JNIEXPORT jstring JNICALL Java_com_example_bluetoo...原创 2018-09-12 15:41:27 · 270 阅读 · 0 评论 -
jni 文件的拆分与合并
java代码 //文件拆分 public void mDiff(View btn){ // String absolutePath = Environment.getExternalStorageDirectory().getAbsolutePath(); String path = "/sdcard/Download" + File.separatorChar...原创 2018-09-17 16:40:19 · 207 阅读 · 0 评论 -
c++ 中的指针和引用
首先: 指针是存储的变量的地址,引用是变量的别名,这个必须记住 单纯的给变量取别名没有任何的意义,作为参数传递,能保证参数传递过程中不产生任何的副本 引用可以直接操作变量,但指针的话必须通过(*p)间接的操作变量,指针可读性行比较低 //引用必须要有初始值 //int &a; //常量必须要有初始值 //const int i; struct Teacher{ int age; cha...原创 2018-09-19 11:33:46 · 110 阅读 · 0 评论 -
jni 全局引用以及局部引用
什么情况下需要释放局部引用对象: 1.访问一个很大的java对象,使用完之后,还要进行复杂的耗时操作 2.创建了大量的局部引用,占用了太多的内存,而且这些局部引用跟后面的操作没有关联性 // 在jni中告知虚拟机回收一个jni对象,在局部引用中通过DeleteLocalRef()来释放内存 //循环创建数组, JNIEXPORT void JNICALL Java_com_example_j...原创 2018-09-14 10:50:15 · 459 阅读 · 0 评论 -
jni 异常交给java层进行捕获及jni缓存策略
上层java代码进行异常捕获 try{ exception(); }catch (Exception e){ Log.e(TAG,e.getMessage()); } //当出现异常的时候,下句代码照样可以执行 Log.e(TAG,"----------------------...原创 2018-09-14 15:00:38 · 1473 阅读 · 0 评论 -
c++ 语法基础知识
#define _CRT_SECURE_NO_WARNINGS #include &lt;stdlib.h&gt; #include &lt;iostream&gt; #include &lt;stdarg.h&gt; //标准命名空间(包含很多标准的定义) //standard using namespace std; //命名空间类似于Java中包(归类) /* //自定义命名空间原创 2018-09-21 11:41:49 · 150 阅读 · 0 评论 -
c++类型转化
c++ 常用的类型转化修饰关键字: static_cast (用于一般的类型转化,double 转成 int 等) const_cast (这个用于 const 修饰过的字符数组,转型是为了去常量) dynamic_cast(用于子类和父类之间的转型) #include <stdlib.h> #include <iostream> using namespace std; ...原创 2018-10-07 22:44:04 · 131 阅读 · 0 评论 -
c++ io 流操作 以及字符串操作
字符流操作如下: #include <fstream> void main(){ char* fname = "D://dest.txt"; //打开输出流 ofstream fout(fname); //创建失败 if (fout.bad()){ cout << "打开失败" << endl; return; } //向文本中写入内容 ...原创 2018-10-08 20:00:09 · 241 阅读 · 0 评论