第4章 Android odex文件格式 第四节
来源:互联网 发布:软件系统项目总结报告 编辑:程序博客网 时间:2024/06/06 02:28
第4章 odex文件格式 第四节
1、 环境配置
Ubuntu 15.10 系统 IP:192.168.153.130
理解odex文件格式
一、odex文件格式
1、 odex是OptimizedDEX的缩写,表示经过优化的dex文件。那么odex有什么作用?它的结构右是怎样的呢?
2、 如何生成odex文件?odex有两种存在的方式:
1) 是从apk程序中提取出来,与apk文件存放在同一目录且文件后缀为odex的文件,这类odex文件多是andriodROM的系统程序。
2) 另一种是dalvik-cache缓存文件,这类odex文件仍然以dex作为后缀,存放在cache/dalvik-cache目录下,保存形式为“apk路径@apk名@class.dex”,例如“system@app@Calculator.app@classes.dex”表示安装在/system/app 目录下Calculator.apk 程序的odex文件,而
“data@app@com.wochacha-1.app@classess.dex”表示安装在/data/app目录下com.wochacha-1.apk程序的odex文件。
3、 由于Android程序apk文件为zip压缩包格式,Dalvik虚拟机每次加载它们时需要从
Apk中读取classes.dex文件,这样会耗费很多cpu时间,而采用odex方式优化的dex文件,已经包含了加载dex必须的依赖库文件列表,Dalvik虚拟机只需要检测并加载所需的依赖库即可执行相应的dex文件,这大大缩短了读取dex文件所需要的时间,而对于部分andriod系统的ROM,由于将系统app全部转换成外置的odex文件与apk放在同一目录,这样系统在启动加载这些程序时会节省更多的时间,启动速度自然也会更快。
4、 如何生成odex文件步骤(注意:这里尽量使用ARM核心的)
1) 使用avd管理工具开启andriod虚拟机
2) 接着上传文件dexopt-wrapper和Hello.zip包到Ubuntu相应的路径中
3) 使用命令上传dexopt-wrapper文件到andriod虚拟机的/data/local/目录下
adb push dexopt-wrapper /data/local/
4) 将/data/local/dexopt-wrapper文件设为最高权限777
adb shell chmod 777 /data/local/dexopt-wrapper
5) 接着上传Hello.zip文件到andriod虚拟机的/data/local/目录下
adb push Hello.zip /data/local/
6) 接着使用adb shell 进入android系统内部
7) 接着到/data/local/目录下执行命令“./ dexopt-wrapper Hello.zip Hello.odex”
8) 最后生成odex优化文件
5、 odex文件整体架构
odex文件的结构可以理解为dex文件的一个超集。Odex文件在dex文件头部添加了一些数据,然后再dex文件尾部添加了dex文件的依赖库以及一些辅助数据
Odex文件头
Dex文件
依赖库
辅助数据
6、 Hello.odex文件头查看
7、 查看整体odex体现结构
- 第4章 Android odex文件格式 第四节
- Android系统ODEX文件格式解析
- Android系统ODEX文件格式解析
- ODEX文件格式
- 第4章 Android dex文件格式 第二节
- 第4章 Android dex文件格式 第一节
- 第4章 Android dex文件格式 第三节
- odex文件格式浅析
- Android Odex
- android ODEX
- android odex
- 第四章第4题
- 反编译android之 .odex .odex.xz .dex
- Android Odex 文件使用
- android 中的 odex 文件
- Android 反编译odex文件
- Android odex文件反编译
- android反编译odex文件
- 产品经理--2竞品分析
- zedgraph控件使用
- keepalived+twemproxy部署redis集群高可用
- 动态规划求最长公共子序列长度和子序列
- 某系统响应时间慢TPS低性能瓶颈调优过程
- 第4章 Android odex文件格式 第四节
- 用户头像base64编码上传与保存头像问题
- zedboard平台结构--PS、PL、硬件互联
- hdoj--5630--Rikka with Chess(规律题)
- 浅浅的介绍一下android里面Handler、Looper、Message和MessageQueue是怎么联系到一起的.
- Different Ways to Add Parentheses
- 微信运营——如何提高文章转化率?
- 安卓基础:Http协议
- 最近一周工作总结