在android4.0源码里面编译出来apk后,用adb install (或adb install -r 重装)安装时,报错[INSTALL_FAILED_DEXOPT]。
$ adb install out/target/product/generic/system/app/xxx.apkFailure [INSTALL_FAILED_DEXOPT]
或者
$ adb install -r out/target/product/generic/system/app/xxx.apk
Failure [INSTALL_FAILED_DEXOPT]
原来在system\app下面的apk是经过优化的,而dex文件不会打包到apk中,dex文件会被优化后,生成odex文件。
下面就是程序编译之后,out/target/product/generic/system/app/下生成的.odex和.apk两个文件
Install: out/target/product/generic/system/app/xxx.odexInstall: out/target/product/generic/system/app/xxx.apk
这样安装apk时,就会缺少dex文件,导致报错[INSTALL_FAILED_DEXOPT]。
-->解决办法:
找到未优化过的apk,即在out/target/product/generic/obj/APPS/下找到对应的工程:
$ adb install out/target/product/generic/obj/APPS/xxx_intermediates/package.apk.unaligned
pkg: /data/local/tmp/package.apk.unaligned
Success
----》另一种解决方法是:
编译一个完整的apk
需要修改Android.mk,在里面添加:
LOCAL_DEX_PREOPT := false