DEX 文件和APK 加载
来源:互联网 发布:淘宝gtx1060 编辑:程序博客网 时间:2024/05/17 02:06
DEX 文件和APK 加载
在Android 中,对编译出来的DEX 字节码和APK 文件的加载过程,也进行了尽可能的优化。
对于预置应用,Android 会在系统编译后,生成优化文件,以ODEX 后缀结尾,这样在发布时除APK 文件(不包含DEX)外,还有一个相应的ODEX 文件。
对于非预置应用,运行前,Android会优化DEX文件,在第一次启动应用时,执行文件的DEX被优化成DEY文件并放在/data/dalvik-cache目录。如果应用的APK文件不发生变化,DEX 文件不会被重新生成,加快了以后的启动速度。APK 文件的加载过程如图2-15 所示。
图2-15 APK加载
DEX 文件由header、string_ids、type_ids、proto_ids、field_ids、method_ids、class_defs、data 等几部分构成。图2-16 显示了这几部分内容在DEX 文件中的布局。图2-16 DEX格式在Java 中,每一个类会被编译成相应的CLASS 文件,一个应用会定义若干个类,这就导致同一个应用的多个CLASS 文件中会存在冗余信息,而在Android 中,“dx”工具会将同一个应用的所有CLASS文件内容整合到一个DEX文件中,这样就减小了整体的文件尺寸,I/O 操作也提高了类的查找速度。“dx”工具整合CLASS文件的过程如图2-17 所示。
图2-17 “dx”工具整合CLASS 文件的过程原来每个CLASS文件中的常量池,在DEX 文件中由一个常量池来统一管理,具体如图2-18 所示。
图2-18 DEX的常量池具体到DEX 文件,经过“dx”工具优化后的内部逻辑如图2-19 所示。
图2-19 DEX的内部逻辑
0 0
- DEX 文件和APK 加载
- android的DEX文件和APK 加载
- Android动态加载jar,dex,apk文件
- 关于apk加壳之动态加载dex文件
- apk/dex文件
- Android系统中的.apk文件和dex文件
- Android系统中的.apk文件和.dex文件
- Android系统中的.apk文件和dex文件
- Android系统中的.apk文件和dex文件
- Android系统中的.apk文件和dex文件
- Android系统中的.apk文件和dex文件
- dex文件手动加载
- Apk文件结构、dex反编译
- Apk文件结构 & dex反编译
- Apk文件结构、dex反编译
- Apk文件结构, Dex反编译
- android 动态加载jar/dex/apk
- android中apk/dex的动态加载
- HDU 4596 Yet another end of the world(一阶不定方程是否可解,gcd)
- 作业《IOS_C语言》while|循环,do...while循环,for循环
- 控件学习-TextView
- linux简单知识自我总结
- TCP通信的三次握手和四次撒手的详细流程
- DEX 文件和APK 加载
- Linux内核模块开发
- Dialog续,Notification
- 数据挖掘--kmeans聚类算法mapreduce实现
- linux kernel的中断子系统之:GIC代码分析
- 数据挖掘--kmeans聚类算法mapreduce实现 代码
- acm hdu p1402 A * B Problem Plus 水题
- 非背包
- AR9331刷openwrt。