一个apk文件在安装到手机过程中,涉及到如下几个目录:
system/app------系统自带的应用安装目录
data/app -------用户程序安装的目录,安装时把apk文件复制到此目录
data/data ------存放应用程序的数据
data/dalvik-cache-----将apk中的dex文件安装到dalvik-cache目录下
安装过程:
- 将apk复制到data/app目录下面,会放到data/app/包名/目录下面,同时apk中的so文件也会拷贝到此目录下的lib文件目录中。
- 解压apk,把其中的classes.dex 拷贝到data/dalvik-cache, 其命名规则是 apk路径+classes.dex
- 在data/data/目录下创建对应的包名目录,data/data/包名/,并在该目录下创建存储应用数据的相关目录,例如cache, database、lib、shared_perfs等
删除安装过程中在上述三个目录下创建的文件及目录。
要注意的是, 安装过程并没有把资源文件, assets目录下文件拷贝出来,他们还在apk包里面呆着,所以,当应用要访问资源的时候,其实是从apk包里读取出来的。其过程是,首先加载apk里的resources.arsc(这个文件是存储资源Id与值的映射文件),根据资源id读取加载相应的资源。