一. dex文件在哪里?
地球人都知道,android安装包是apk后缀的,普通用户根本不知道什么是dex文件,那什么是dex文件呢??哈哈,其实他是apk的一个很重要的组成部分。大家都在用微信,用微信做例子好啦,下面是一个微信的apk
咦,不就是一个普通的apk吗?慢着,让我解压给你们看看里面藏着什么鬼。将文件后缀改成.zip,将weixin.apk重命名为weixin.zip,然后解压看看
各位看官都看到了吧,解压apk文件后可以看到class.dex文件
二.dex文件是什么?
dex文件是什么呢?他类似于java的class文件,里面保存着android类的信息。android有提供dx工具可以class文件转换为dex文件
三.dex优化odex
optimize,优化的意思。odex全称是optimize dalvik package(优化的dalvik包),别问我dalvik是什么意思,我会告诉你他是android虚拟机的名称吗?
四.ROM的“odex化”
各位客官买的手机android手机第一次开机是不是都比较慢呢?这个慢一个大的原因就是手机正在做odex优化。
例如以上面的微信为例,如果手机厂商预装微信,要怎么做的?
方法一:手机生产出来后,各大厂弟厂妹们开机然后手动下载微信,然后手动安装
方法二:将weixin.apk打包进刷机包,厂弟厂妹们负责刷机。
各大厂商用的是方法二,方法一纯属虚构。
weixin.apk打包进刷机包后,第一次开机,android系统会解压这个apk,然后将class.dex文件转化为weizin.odex文件,正是这个转化过程相当耗时。
那如果解决这个耗时的问题呢?聪明的你应该想到了。既然这个转化过程是在开机的时候做的,能不能在制作刷机包的时候就做了呢?“odex化”就是将微信的odex文件制作好之后,直接打包进刷机包,这样子的话,开机就不会管这个微信了。
说的更加大白话一点就是,没做“odex化”的手机第一次开机要安装一次微信,而做了“odex化”的手机相当于第一次开机前已经安装好微信了。那开机过程少了一次安装apk的时间,当然快一点啦。
具体实操过程就是:解压出weixin.apk的class.dex,然后使用工具将class.dex转化为class.odex,然后将apk内的class.dex删除,替换为class.odex.完成。