跳转至

Android 系统原理

系统相关

说说Android 系统开机流程

回答

AMS相关

说说Android app 启动流程

回答

编译相关

简单说说 dexopt 与 dex2oat 的区别?

回答
  • ART_view

通过上图可以很明显的看出 dexoptdex2oat 的区别,前者针对 Dalvik 虚拟机,后者针对 Art 虚拟机。

  • 在5.0以前的版本,Android 使用Dalvik虚拟机,在加载Dex时会触发dexopt生成odex文件,实际上是对 dex 文件 进行 verificationoptimization操作(譬如优化调用虚拟指令等), 在运行时,通过JIT编译器将热点代码编译成native代码,其余的一边运行,一边编译。

  • 在5.0之后的版本,Android 使用ART虚拟机,APK在安装的过程中,会通过dex2oat工具生成一个OAT文件。oat文件是一种Android私有ELF文件格式,它遵循ELF格式,ELF是Unix系统上可执行文件,可以直接被本地处理器执行