博客文章大多是正确的,但并不完整。 要完全了解odex文件的功能,您必须了解应用程序文件(APK)的工作原理。
应用程序基本上是美化ZIP档案。 java代码存储在名为classes.dex的文件中,此文件由Dalvik JVM解析,处理过的classes.dex文件的缓存存储在手机的Dalvik缓存中。
odex基本上是应用程序的classes.dex的预处理版本,可以为Dalvik执行。 当应用程序被索引时,classes.dex将从APK归档中删除,并且它不会向Dalvik缓存写入任何内容。 没有索引的应用程序最终会有2个classes.dex文件副本 - APK中的打包文件和Dalvik缓存中的已处理文件。 由于Dalvik必须提取和处理classes.dex文件,因此首次启动也需要更长的时间。
如果您正在构建自定义ROM,那么为框架JAR文件和股票应用程序编制索引是一个非常好的主意,以便最大化用户安装的应用程序的内部存储空间。 如果你想要主题,那么只需deodex - > 应用你的主题 - > reodex - > 发布。
要实际使用deodex,请使用small和baksmali:
[http://code.google.com/p/smali/wiki/DeodexInstructions]