有很多时候,我们在修改bug的时候,发现代码明明修改了,

编译也ok了,但是将编译的结果 push 到手机上去之后,发现经常没效,纳闷了……

经常是odex 在作怪:

ODEX是安卓上的应用程序apk中提取出来的可运行文件,是通过apk安装包的中的dex优化过的,再把apk包里的dex文件删除。   

这样做可以加快软件的启动速度,预先提取,减少对RAM的占用,因为没有odex的话,系统要从apk包中提取dex再运行。

譬如我们进到 system/app 目录下,经常会发现有一个apk文件,与之对应的有一个同文件名的odex文件。

如果我们想只重新 push Camera.apk system/app 目录下,而没有删除掉与之对应的 Camera.odex 文件,

想看到我们代码里面修改应有的效果的话,那就不太可能了。

因为真正在虚拟机上跑的是 odex 文件,如果系统发现已经有了 odex 文件了,那么就不会再从 apk 包里面去解压出来一个了。

那么我们 push 到手机的 apk 也没有什么意义了。

固需要在push 之前或之后,先删除掉与之同名的 odex 文件再重新启动对应的 apk ,才会看到代码修改是否有效。

如果想要深入了解 odex ,可以参考:http://baike.baidu.com/view/7784265.htm

如果这还不够,可以看看android Dalvik 虚拟机:http://download.csdn.net/detail/fulinwsuafcie/4421681

更多相关文章

  1. 使用Android Dropbox API检查Dropbox上是否存在文件
  2. Android中的内存储、外存储概念、文件操作与PC端的有些不同
  3. Android 打包VersionCode自增、APK文件名修改、上传蒲公英
  4. Android开发-直播视讯(3)-创建一个Ubuntu虚拟机并实现VMtools文
  5. 关于Android资源文件中出现百分号的问题
  6. 有没有方法在不root手机的情况下读取Data目录下的文件
  7. Android 中文件类型与MIME的匹配表
  8. Android:无法在同一部手机上执行通过Linux部署编译的文件
  9. 多个dex文件定义了Landroid/支持/v13/app/FragmentCompatICS。

随机推荐

  1. android studio学习日记
  2. android保存文件到手机内存
  3. Android(安卓)判断网络是否可用 & 获取IP
  4. android定位的实现
  5. mac下下载安装Android Studio教程
  6. Android下调用传感器
  7. Android 数据保存
  8. Android开发现状分析(2020版)
  9. Android--布局方式(LinearLayout)学习
  10. Android 数据存储(二) 文件的使用