聊完DexClassLoader问知不知道odex,这个以前也注意过。
odex是安卓上的应用程序apk中提取出来的可运行文件,是通过apk安装包的中的dex优化过的,再把apk包里的dex文件删除。
这样做可以加快软件的启动速度,预先提取,减少对RAM的占用,因为没有odex的话,系统要从apk包中提取dex再运行。
odex存放在/data/dalvik-cache目录下。以后再运行这个程序的时候,就只要直接加载这个优化过的ODEX文件就行了,省去了每次都要优化的时间。
不过,这个优化过程会根据不同设备上Dalvik虚拟机的版本、Framework库的不同等因素而不同。在一台设备上被优化过的ODEX文件,拷贝到另一台设备上不一定能够运行。
具体分析见如下内容:
http://blog.csdn.net/roland_sun/article/details/47183119
或者:
https://baike.baidu.com/item/ODEX
odex可能引起在修改bug的时候,发现代码明明修改了,编译也ok了,但是将编译的结果 push 到手机上去之后,发现没效。需要在push 之前或之后,先删除掉与之同名的 odex 文件再重新启动对应的 apk ,才会看到代码修改是否有效。