摘要:
百度了一下,google了一下,关于NDK引用的介绍无10篇中就有9.9篇是相同的,对于这种问题,我只能呜呼哀哉了!! 局部引用(函数内部对象类型变量):在C或C++中,局部变量表示只运行范围局限在该变量最近的 “{}”花括号里,常见的就是函数中的变量了,但局部引用和局部变量不同了,引用的主体是对象,指针, 因此,设涉及到内存回收问题。同局部变量一样,局部对象在函数执行完成后会被立即销... 阅读全文
posted @ 2016-12-09 19:07
brave-sailor
阅读(1303)
评论(0)
推荐(0)
摘要:
Android studio 2.2 已经进入beta版本,新功能添加众多,NDK编程也得到了简化。官方博客介绍。本文介绍如何使用新版android studio调用 c++代码,为了超级通俗易懂,例子是最最最基本的例子,就是调用c++代码所需的最基本的地方,其余的自行添加即可。 1.下载最新版an 阅读全文
posted @ 2016-12-09 16:52
brave-sailor
阅读(737)
评论(0)
推荐(0)
摘要:
1. NDK简介 Android NDK 是在SDK前面又加上了“原生”二字,即Native Development Kit,因此又被Google称为“NDK” 1.1 NDK产生的背景 Android平台从诞生起,就已经支持C、C++开发。 众所周知,Android的SDK基于Java实现,这意味 阅读全文
posted @ 2016-12-09 15:52
brave-sailor
阅读(1006)
评论(0)
推荐(0)
摘要:
1.配置Anroid Studio(这步是关键) 使用[command+,] 打开Preferences,选择External Tools,点击加号框如下图: Paste_Image.png Paste_Image.png 点击+号之后,打开Macros 配置宏命令界面,如下图: Paste_Ima 阅读全文
posted @ 2016-12-09 15:41
brave-sailor
阅读(404)
评论(0)
推荐(0)
摘要:
最近在将一个小应用从eclipse开发迁移到android studio,程序中有native代码实现,在eclipse是靠Android.mk这么个mk文件来组织编译的,但到android studio上就不行了,因其是靠gradle组织,所以makefile里的配置要转换为build.gradl 阅读全文
posted @ 2016-12-09 14:50
brave-sailor
阅读(256)
评论(0)
推荐(0)
摘要:
编写一个可以与C代码交互的android工程需要如下步骤: 1、JAVA代码中写声明native 方法 2、 创建jni目录,编写c代码,方法名字要对应 3、编写Android.mk文件(交叉编译的规范) 4、Ndk编译生成动态库 5、Java代码load 动态库.调用native代码 具体实现如下 阅读全文
posted @ 2016-12-09 11:15
brave-sailor
阅读(201)
评论(0)
推荐(0)
摘要:
JNI(Java Native Interface,JAVA本地接口) 可以使Java代码和其他语言写的代码(如C/C++代码)进行交互。为什么要进行交互? 首先,Java语言提供的类库无法满足要求,且在数学运算,实时渲染的游戏上,音视频处理等方面上与C/C++相比效率稍低,如下图所示。其次,Jav 阅读全文
posted @ 2016-12-09 11:14
brave-sailor
阅读(183)
评论(0)
推荐(0)
摘要:
参考文章: http://www.th7.cn/Program/Android/201509/550864.shtml http://www.open-open.com/lib/view/open1451917048573.html http://blog.csdn.NET/sodino/artic 阅读全文
posted @ 2016-12-09 10:29
brave-sailor
阅读(409)
评论(0)
推荐(0)
摘要:
Java Native Interface (JNI)标准是java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI 是本地编程接口,它使得在 Java 虚拟机 (VM) 内部运行的 Java 代码能够与用其它编程语言(如 C、C++ 和汇编语言)编写的应用程序和库进行交互操作。 阅读全文
posted @ 2016-12-09 10:10
brave-sailor
阅读(255)
评论(0)
推荐(0)
摘要:
做上一个项目的时候因为与C引擎交互频繁,有时候会突然莫名其妙的的整个应用程序直接挂掉。因为我是学Java 开始的,所以对主动释放内存没多大概念(GC直接帮忙回收),后查询原因才知道是因为JNI 有些对象内存未释放引起。下面介绍下相关的资源释放。 JNI 编程实现了 native code 和 Jav 阅读全文
posted @ 2016-12-09 09:57
brave-sailor
阅读(166)
评论(0)
推荐(0)
摘要:
接着上篇文章继续讲。主要关于引用类型的数据传输,本文将介绍字符串传输和自定义对象的传输。 1、主要流程 1、 String 字符串传输 a) 上层定义一个native的方法,需要一个String 参数 ,返回一个String b) JNI对应上层的方法,打印出上层传输下来的String数据,并返回处 阅读全文
posted @ 2016-12-09 09:56
brave-sailor
阅读(192)
评论(0)
推荐(0)
摘要:
刚接触JNI 的 兄弟在看一些demo的时候 发现有类似与“([Ljava/lang/String;)V”的东西的时候肯定会很“蛋疼”,完全不懂这是啥东西,怎么来的,有啥用处? 今天就讲讲这个“蛋疼”的东西把,俗称 方法签名 直接来个Demo 把 : 观察下面四个方法对应的签名 public voi 阅读全文
posted @ 2016-12-09 09:55
brave-sailor
阅读(198)
评论(0)
推荐(0)
摘要:
之前的一些文章都有涉及到上层和中间层的数据传输,简单来说,也就是参数和返回值的使用。因为中间层要做的最多的也就是数据传输与转换,下面来介绍下这方面的知识。 数据传输可分为 基本数据类型传输 和 引用数据类型的传输 , 因为数组传输也比较特别(其实数组也是引用类型),所以这里也专门分出来讲讲。 1、主 阅读全文
posted @ 2016-12-09 09:55
brave-sailor
阅读(200)
评论(0)
推荐(0)
摘要:
随便谈谈为什么要Java调用C 吧: 我认为: 1、 有些公司开发Android项目的时候, 许多组件功能可能是C中已经实现了,所以我们没必要同样的功能又在java中实现一遍。例如我之前做的一个项目,公司C引擎已经很成熟了,所以直接在java中封装好接口,由C去实现。 2、 C的速度一般是java的 阅读全文
posted @ 2016-12-09 09:54
brave-sailor
阅读(164)
评论(0)
推荐(0)
摘要:
许多成熟的C引擎要移植到Android 平台上使用 , 一般都会 提供 一些接口, 让Android sdk 和 jdk 实现。 下文将会介绍 C 如何 通过 JNI 层调用 Java 的静态和非静态方法。 1、主要流程 1、 新建一个测试类TestProvider.java a) 该类提供了2个方 阅读全文
posted @ 2016-12-09 09:54
brave-sailor
阅读(134)
评论(0)
推荐(0)
摘要:
经典老套流程,学编程语言东西,先学它最基础的数据类型,JNI也是如此。JNI 定义了一系列基本数据类型和引用数据类型与java想对应。 1、基本数据类型 下面一张表是描述了 Java 基本数据类型和JNI中基本数据类型的相对应关系已经占用空间大小。 随便观察就能发现,其实就基本数据类型而已,JNI基 阅读全文
posted @ 2016-12-09 09:52
brave-sailor
阅读(176)
评论(0)
推荐(0)
摘要:
Hello World作为所有编程语言的起始阶段,占据着无法改变的地位,所有中/英/法/德/美……版本的编程教材中,hello world总是作为第一个TEST记录于书本之中,所有的编程第一步就在于此了!经典之中的经典!hello world! 下面介绍下NDK开发的Hello World 1、An 阅读全文
posted @ 2016-12-09 09:51
brave-sailor
阅读(160)
评论(0)
推荐(0)
摘要:
程序都是调出来的。 下面我介绍下JNI层的log打印方法的使用,类似与Android sdk提供的log 1、Android 应用层 MainActivity.java 主要功能代码 a) 静态载入 So 库 b) 声明本地方法 c) 调用本地方法 代码附有注释如下: public class Ma 阅读全文
posted @ 2016-12-09 09:51
brave-sailor
阅读(268)
评论(0)
推荐(0)
摘要:
工欲善其事 必先利其器 , 下面介绍下 Eclipse SDK NDK Cygwin CDT 集成开发环境的搭建。 1、Android 开发环境搭建 Android开发环境搭建不是重点,相信看此文章的很多人都已经搭建成功,这里随便概述性的说说。 1) 下载 JDK 2) 下载 Eclipse 3) 阅读全文
posted @ 2016-12-09 09:50
brave-sailor
阅读(167)
评论(0)
推荐(0)
摘要:
一个Android.mk file用来向编译系统描述你的源代码。具体来说:该文件是GNU Makefile的一小部分,会被编译系统解析一次或多次。你可以在每一个Android.mk file中定义一个或多个模块,你也可以在几个模块中使用同一个源代码文件。编译系统为你处理许多细节问题。 一个工程中的源 阅读全文
posted @ 2016-12-09 09:50
brave-sailor
阅读(149)
评论(0)
推荐(0)

浙公网安备 33010602011771号