目录
一、Android基本架构
1.Android操作系统基本分层
一般由4层,Linux内核层,系统运行层,应用框架层和应用层,从开发人员的角度来讲,一个Android应用可以分为两个部分:一部分使用java来实现,也称为Dalvik虚拟机层,一部分使用C/C++实现,也称为Native层。
2.Dalvik虚拟机层
Android应用虽然可以使用Java开发,但是Android应用却不是运行在标准Java虚拟机上的,而是运行在谷歌专门为Android开发的Dalvik虚拟机上,虽然Android从5.0开始默认使用ART虚拟机,抛弃了Dalvik虚拟机,但是Dalvik虚拟机任然很重要,尤其是对DEX文件的反编译。
Dalvik虚拟机中运行的是Dalvik字节码,并不是Java字节码,所有的Dalvik字节码均由Java字节码转换而来,并打包成一个DEX可执行文件。Dalvik虚拟机有一套自己的指令集,以及一套专门的Dalvik汇编代码。
3.Native层
Android既可以使用Java开发,也可以用C/C++结合,甚至可以使用纯C/C++开发,使用C/C++开发的代码会形成一个so文件,会在Android应用运行时加载到内存中。这与x86平台中Linux加载so库的方式非常独特,唯一不同的是Native蹭的函数与Dalvik层的函数进行关联,使得Native层的函数在Dalvik层中可以很方便地调用。
二、ARM架构基础
1.基本架构介绍
ARM处理器一共有37个32位的寄存器,31个通用寄存器,6个为状态寄存器,共7种运行模式,除用户模式之外,其余6种称为特权模式,Android应用主要在用户模式下运行。
用户模式下