如何解释dalvik字节码文档:在Android系统源码目录dalvik\docs有相关指令文档dalvik-bytecode.html实战:来直接实战模拟来理解枯燥的理论用IDA打开一个dex文件, 设置显示指令随便找一段代码注意:206E 28DE 0050是IDA的显示问题 在文件中的存储顺序... ...
分类:
其他好文 时间:
2016-08-14 07:49:15
阅读次数:
192
1.启动加载完内核2.执行init进程 ----> 设备初始化工作 a1. 读取inic.rc a2. 启动Zygote进程 ----> 该进程是所有进程的孵化器 b1. 初始化dalvik虚拟机 b2. 启动system_server进程 c1. 通过socket方式发送命令给Zygote进... ...
分类:
移动开发 时间:
2016-08-14 07:11:06
阅读次数:
184
Android程序有很多Activity,比如说主窗口A,调用了子窗口B,如果在B中直接finish(), 接下里显示的是A。在B中如何关闭整个Android应用程序呢?本人总结了几种比较简单的实现方法。 1. Dalvik VM的本地方法 android.os.Process.killProces ...
分类:
移动开发 时间:
2016-07-31 17:22:01
阅读次数:
138
ART运行时垃圾收集(GC)过程分析 ART运行时与Dalvik虚拟机一样,都使用了Mark-Sweep算法进行垃圾回收,因此它们的垃圾回收流程在总体上是一致的。但是ART运行时对堆的划分更加细致,因而在此基础上实现了更多样的回收策略。不同的策略有不同的回收力度,力度越大的回收策略,每次回收的内存就 ...
分类:
移动开发 时间:
2016-07-19 15:30:23
阅读次数:
186
1.什么是Zygote?在Android中所有的应用程序进程,以及用来运行系统关键服务的System进程都是有Zygote进程负责创建的,因此我们就叫他受精卵,毕竟它真的和受精卵很类似。我们知道,Android的应用程序是由Java编写的,它们不能直接以本地进程的形态运行在Linux上,只能运行在Dalvik/ART虚拟机中。每个应用程序都运行在各自的虚拟机中,应用程序每次运行都要重新初始化并启动虚...
分类:
其他好文 时间:
2016-07-17 00:55:17
阅读次数:
290
整个文件的布局
文件头
索引区
string_ids
type_ids
proto_ids
field_ids
method_ids
数据区
class_def
class_data_item
code_item
data
附录
测试用的Dex的java代码
参考资料
整个文件的布局整个Dex文件可以分成三部分,文件头、索引区、数据区,如下图所示。 文件头
记录Dex文件的概览、包含文件大小、校验...
分类:
其他好文 时间:
2016-07-17 00:04:40
阅读次数:
297
Under the Hood: Dalvik patch for Facebook for Android
Facebook is one of the most feature-rich apps available for Android. With features likepush notifications, news feed, and an embedded version of...
分类:
移动开发 时间:
2016-07-15 21:07:21
阅读次数:
652
Android内存分配
Java Head(Dalvik Head),这部分的内存是由Dalvik虚拟机管理,可以通过java的new方法来分配内存;而内存的回收是符合GC Root回收规则。内存的大小受到系统限制,如果使用内存超过App最大可用内存时会抛出OOM错误。
Native Head,这部分内存,不受Dalvik虚拟机管理的,内存的分配和回收是通过C++的方式来创建和释放的,没有自动...
分类:
其他好文 时间:
2016-07-14 15:28:27
阅读次数:
909
Android平台采用了整合的策略思想,包括底层Linux操作系统、中间层的中间件和上层的Java应用程序。下面我把Android的特性及其架构体系结构总结一下。
一、Android的平台特性
Android平台有如下特性:
1. 应用程序框架支持组件的重用与替换。
这样我们可以把系统中不喜欢的应用程序删除,安装我们喜欢的应用程序。
2. Dalvik...
分类:
移动开发 时间:
2016-07-13 16:17:48
阅读次数:
295
http://pan.baidu.com/s/1hs2kHbm
AndFix热补丁原理就是在 native 动态替换方法 java 层的代码,通过 native 层hook java 层的代码。
优点
1. 因为是动态的,所以不需要重启应用就可以生效
2. 支持ART与Dalvik
3. 与multidex方案相比,性能会有所提升(Multi Dex需要修改所有cl...
分类:
移动开发 时间:
2016-07-13 16:16:12
阅读次数:
493