您的位置:首页 > 移动开发 > Android开发

第4章 Android odex文件格式 第四节

2016-03-06 13:13 344 查看
第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体现结构

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: