1、用mm编译apk时,会在out目录下生成.apk和.odex两个文件,这应该是为了加快运行速度,把dex分出来做的预处理。但是一般开 发时需要mm编译出一个完整的apk,直接用adb进行安装就可以进行调试。在./build/core下有个package.mk文件,里面有一个选 项,LOCAL_DEX_PREOPT ,4.0默认把这个选项设置成了true,将LOCAL_DEX_PREOPT值改为false,完整的apk就有了。同样,对于编译jar包,则需要改./build/core下java_library.mk文件对应的值。
2、以下截取自http://blog.163.com/bluesky_07_06_1/blog/static/164440083201242132835163/
我们在原生Android中安装apk会产生apk和odex两个文件,而使用第三方的rom只有apk一个文件。
我们知道普通的Android App编译之后会生成apk,其中的class.dex是其可执行文件。Android App运行的策略也就是解压apk后运行class.dex。那么odex是什么?
odex是同名apk经系统优化后的dex文件,原生ROM中apk和odex文件是配对的,对应的apk文件中没有了dex(比正常可安装的apk小)。
这样的好处:
1.加快程序的装载与运行
2.防止系统程序的简单复制,针对不同的ROM,odex文件是变化的,不可混用的,否则程序就不能政策运行。与odex配对的apk文件又因为缺少dex无法单独安装和使用。
3.节省data分区资源(这个我的理解是原始apk解压需要占用data分区资源,odex可直接执行)
浙公网安备 33010602011771号