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

第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体现结构

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

随行之旅

python国产化自动化

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

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

打赏作者

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

抵扣说明:

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

余额充值