在前一篇文章中。我们通过分析OAT文件的载入过程,认识了OAT文件的格式,当中包括了原始的DEX文件。既然ART运行时运行的都是翻译DEX字节码后得到的本地机器指令了。为什么还须要在OAT文件里包括DEX文件,而且将它载入到内存去呢?这是由于ART运行时提供了Java虚拟机接口,而要实现Java虚拟 ...
分类:
移动开发 时间:
2017-06-08 16:37:33
阅读次数:
411
一个简单的样例让我们初步地了解JNI的作用,可是关于JNI中的一些概念还是须要了解清楚,才可以更好的去利用它来实现我们想要做的事情。 那么C++和Java之间的是怎样通过JNI来进行互相调用的呢? 我们知道。在Android中,当Java文件被编译成dex文件之后,会由类载入器载入到Dalvik V ...
分类:
移动开发 时间:
2017-05-26 13:11:31
阅读次数:
144
android的ndk学习(1) 之前学了一段时间ndk,总认为要总结一下。ndk使得很方便地实现java和C与C++代码的相互沟通。合理地掌握使用ndk能够提高应用程序的运行效率。所以对于学习anndroid开发的人来说,ndk是必须掌握的工具。刚刚開始学习的时候是有点兴奋。有点害怕的,兴奋是由于 ...
分类:
移动开发 时间:
2017-05-23 13:19:47
阅读次数:
227
①交叉编译概念 在windows上编译可以在除了windows平台之外 可以执行的机器码 android是Linux windows编译在linux上执行的机器码 动态链接库 .so .dll NDK google提供的交叉编译的工具 ②如何使用ndk指令 ndk-build 添加到环境变量 可以在 ...
分类:
其他好文 时间:
2017-05-21 23:27:25
阅读次数:
484
AndroidJNI 通过C++调用JAVA 1. JNIEnv对象 对于本地函数 JNIEXPORT void JNICALL Java_video1_TestNative_sayHello(JNIEnv * env, jobject obj) { cout<<"Hello Native Test ...
分类:
移动开发 时间:
2017-05-18 14:46:54
阅读次数:
318
用GDB的bt命令很容易就能打印native的调用栈,如: 有时候我们想知道Native Crash时的java调用栈,这时候我们可以用gDvm中的数据来推导java栈。 我们知道gDvm中有一个threadList,它是一个线程链表,可以通过这个链表遍历当前进程中的所有线程。 用info thre ...
分类:
数据库 时间:
2017-05-14 12:12:59
阅读次数:
317
前面两篇文章简介了JNI层跟Java层的一些相应关系,包含方法名,数据类型和方法名称等,相信在理论层面。可以非常好地帮助我们去了解JNI在Native本地开发中的作用,对JNI的一些概念也有了一个初步的认识,因为表达能力或者理解还是有限,有些地方讲得不是非常清楚。假设各位朋友有认为云里雾里,欢迎大家 ...
分类:
移动开发 时间:
2017-05-13 11:27:55
阅读次数:
271
图:杭州西湖 思路: 1、mp3转成pcm(音频数据),ffmpeg做的事 2、OpenSL ES引擎创建AudioPlayer,实际调用了AudioTrack 遇到的错误: Error #include nested too deeply 原因:c文件互相引用 解决方案: 1、将两个头文件共用的那 ...
分类:
移动开发 时间:
2017-05-10 01:03:42
阅读次数:
326
学习Android Jni时,一个二维 整数 数组的传递花了我好长时间,在网上查的资料都不全,当然最后是成功了,写在这里是为了自己记住,当然有人搜索到并利用了我会很高兴。 in Android Java file public native boolean add(int[][] qizidata, ...
分类:
移动开发 时间:
2017-05-09 11:16:36
阅读次数:
265
VM工作原理和特点主要是指操作系统装入JVM是通过jdk中Java.exe来完成,通过下面4步来完成JVM环境. 1.创建JVM装载环境和配置 2.装载JVM.dll 3.初始化JVM.dll并挂界到JNIENV(JNI调用接口)实例 4.调用JNIEnv实例装载并处理class类。 = GC 基础 ...
分类:
其他好文 时间:
2017-04-22 17:32:33
阅读次数:
286