目前学习android framework层的开发,更改系统自带的apk源码,通过mmm指令编译后产生的apk和odex文件,然后将其覆盖的开发板上,重启后发现无限报错
这就让人郁闷了啊,仅仅是在源码中加入了一句话,怎么会造成这么大的问题呢?
让我怀疑自己修改代码造成的问题,于是还原后重新编译,再次放入开发板后还是无限报错,这就奇怪了。
于是开始琢磨,这odex文件是干嘛的呢?百度后才发现,这odex可以让产商防止一定的反盗版,自从android4.0.3后通过mk编译后的apk文件会有两个,那就是apk和odex文件,那么如何解决这个问题呢? 便是将apk和odex文件和二为一了,
解决问题:
1,到需要编译的apk源码路径下(别说不知道,就是与src,res同级的目录)打开android.mk文件
2,在其中加入一行 LOCAL_DEX_PREOPT := false (android4.0.3后默认产生odex文件,这里设置为不产生),保存
3,再次通过mmm 命令编译后产生的apk文件(只有apk文件)
4,通过adb push 指令将apk覆盖到系统的app目录下。后重启
注意:这里有一点需要注意,若是原来的system/app目录下有该apk文件对应的odex,那么请记住,一定要删除!
原文地址:http://blog.youkuaiyun.com/javashu2012/article/details/7787818