apk文件内容以及安装涉及目录

转载请注明出处:http://blog.csdn.net/droyon/article/details/22429191

1、android  apk文件中包含哪些文件,各个文件作用是什么
2、apk安装涉及哪些目录,目录有何意义?


android应用程序是以apk格式的文件进行发布的,源代码文件、资源文件、AndroidManifetst.xml文件等会被压缩到apk文件中。apk文件和jar包一样,是一个zip文件,我们可以讲apk文件扩展名更改为zip,然后解压,了解一下各种文件在apk中的存在形式。


1、res目录:该目录包含了工程中res目录下除values以外的所有内容,一般包括各种layout文件,drawable,但layout文件内容是以二进制xml的方式进行保存的,而所有的drawable图像资源都是未经压缩过的原始文件。因为drawable中的jpg,png本身就是压缩文件。上文介绍了Resource文件getValue方法的调用示例,其中就是以layout为例。

2、classes.dex:该文件是真正的java class文件,dex文件时google发明的,这种格式的作用和java class文件相同。所不同的是,为了能够快速读取class文件并让class在解释时占用更少的内存,gogole对标准的class文件进行了重新的格式优化,这就是dex。想从dex文件看到源码,我们可以进行反编译。


3、resources.arsc:该文件同样是二进制格式的文件,aapt对资源进行编译时,会为每一个资源分配唯一的id值,程序在执行时会根据这些id值读取特定的资源,而resouces.arsc文件正式包含了所有的id值的数据集合。在该文件中,如果某个id对应的是string,那么该文件会直接包含该值,如果id对应的资源是某个layout或者drawable资源,那么该文件会存入对应资源的路径。这也跟我们在上一篇文章介绍的getValue方法流程一样。


apk文件安装涉及的目录:

  1. /data/app:安装apk时,系统首先会把文件拷贝到该目录下,如果是系统程序,即出厂自带的程序,则android4.4版本之前位于/system/app,android 4.4版本之后位于/system/priv-app下。
  2. /data/dalvik-cache:每个apk都包含一个class.dex文件,系统在安装apk时,会把该apk中包含的class.dex解压出来放到该目录中,当用户启动该应用程序时,能够快速读取类文件,系统应用程序踪的class.dex文件同样也放到该目录下。该路径的文件命名方式为:“apk路径 + class.dex”,其中apk路径中的子目录符号使用@表示。例如:data@app@com.android.example.apk@class.dex。user版本的apk文件可能会被进一步优化,变成odex类型文件。
    任何程序都可以读写此目录,这就为其他应用程序访问其他apk应用程序文件提供了可能。比如:可以安装某个apk,该apk是插件程序,本身并不能运行,而仅仅是为其他应用程序提供一些实现类,然后在该目录下找到相应的dex文件,使用类动态加载器Dex  ClassLoader.
  3. /data/data:每个应用程序都有自己的数据目录。目录名称为应用程序的包名,所有的数据目录都在该目录下。

在apk文件安装完毕,/data/app或者/system/app目录中的原始文件不会删除,当程序运行时,所需要的layout文件,drawable文件等需要从该目录中的原文件中进行读取。加载资源时,首先加载resource.asc,然后根据asc中的id值找到相应的资源。


关于加载的流程,请查看上一篇博文。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hailushijie

您的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值