android apk 安装过程

本文详细介绍了Android APK的安装过程,包括复制到/data/app/目录,创建包名数据目录,.dex文件优化(Dalvik生成.odex,ART生成.oat),解析AndroidManifest.xml并注册应用。此外,还解释了Dalvik和ART的区别,如Dalvik安装快但运行时编译慢,而ART安装慢但运行速度快。

一、android apk 安装过程:

android apk的安装过程分为以下四个过程:

  • 将原始apk复制到/data/app/目录下(也有将so文件拷到这个文件夹下的,虽然apk理由也有so文件);
  • 在data/data/目录下为app创建一个以包名命名的数据目录,运行app产生的数据和缓存放在这里面,比如说cache,database,file等;
  • 将apk里面的字节码文件(.dex)进行优化,然后放在data/dalvik-cache/里面下(ART虚拟机在这个文件下分了cpu架构子目录,比如说arm,x86等),这里的优化分为两种情况:
  1. dalvik虚拟机会将.dex文件优化成.odex文件。注意.dex和.odex,他们都是字节码;
  2. ART 虚拟机会将.dex文件优化成.oat机器码。
  • 解析AndroidMainfest.xml文件,将应用程序信息在系统进行注册,比如向包管理系统注册等。

二、几点说明

  • app运行的时候,会从data/dalvik-cache/里面读取优化后的文件(.odex或者.oat文件),但是资源文件的话,比如图片等,还是会从apk里面读取(根据resource.arsc文件找到相应的资源文件)。
  •  dex格式是专为Dalvik应用设计的一种压缩格式,适合于内存和处理器速度有限的系统。Android程序打包时,都会讲class文件转化成.dex文件,但是他们的本质都还是字节码。
  •  Dalvik:Google公司自己设计用于Android平台的Java虚拟机。 在Dalvik下,应用每次运行都需要通过即时编译器JIT)将字节码转换为机器码,即每次都要编译加运行这一机制并不高效,但让应用安装比较快,而且更容易在不同硬件和架构上运行
  •  ART(Android Runtime):ART是新一代Android平台的虚拟机,运行于Android5.0+的系统中。它是使用AOT进行处理(Ahead-Of-Time),并会在应用程序安装完毕时,进行预先的基础性编译作业,也就是说,在安装时,会将.dex文件转成机器码,应用的启动和执行时,可以直接读取机器码,从而使得程序启动和运行速度更快,但是安装过程会变得更慢。
Dalvik和ART的本质区别就是:Dalvik优化的时候是将.dex字节码转为.odex字节码文件,最后还是字节码,而ART是将.dex字节码转为.oat机器码。而运行的时候,识别的是机器码。

Dalvik:安装快,占用内存小;运行时需要先将字节码转为机器码,运行速度慢。ART:安装慢,占用内存大;运行时直接读取机器码,进行速度快。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值