安装APP损坏,出现[INSTALL_FAILED_DEXOPT]的解决办法

本文记录了解决WhatsApp更新失败及安装问题的过程。通过卸载残留文件并清除缓存最终成功安装。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://blog.renren.com/blog/232067201/494816115

        今天下午,我在打开whatsapp的时候,破玩意儿又提示我有新版本要不要更新,于是我选择了Yes。经过缓慢的安装之后,忽然提示我installed unsuccessful。我一下脑袋就大了,我是安装的没有修改的官方包,更新又是自动下载的,为什么还会出现这种情况?
         于是我怀疑可能是官方更改了证书,所以需要卸载之后重新安装。于是我打开Drawer准备重新启动whatsapp。没想到虽然whatsapp的图标出现在drawer里面,但是启动的时候却提示我没有安装这个app!
         这还了得,于是我将whatsapp卸载了,然后试图重新安装新版。还是提示我不能安装!
        于是我使用adb再次尝试安装,提示我[INSTALL_FAILED_DEXOPT],Google之后发现dexopt根本就不是一个单词,应该是dex和optimize的合成缩写。那么有可能是apk文件包里面的dex文件损坏,于是我把它反编译了出来,尝试重新编译。但是不知道这个东西是用什么编译的,smali根本就不能重新编译回去……只能作罢。
所以假设问题还是出现在手机端。Google了一下,发现这个问题应该是出现在生成dex文件时候发生的错误,但是能搜索到的结果有许多是说由于G1机身空间太小导致的,显然同样的问题不可能出现在刚刚做完app2sd的milestone上面。但是我搜索到了一个如果强制完全卸载app的文章,里面介绍了安装app之后,相关文件分布的路径。
所以我的思路就很清晰了,首先完全卸载,再行安装。
经过试验,发现果然可行!那么提炼一下,可以得出这类问题的通用解决思路。

  1. 假设该app名为ketech,安装包名为ketech.apk。

  2. 查看/data/app里面是否有名称包含ketech的apk或zip包,有可能为类似com.android.ketech.apk或com.android.ketech.zip的形式,有则删掉。
  3. 查看/data/app-priviate里面是否有名称包含ketech的apk,名称形式同上,有则删掉。(做了app2sd的朋友可能还需要查看一下app2sd文件夹里面是否含有此apk包)
  4. 查看/data/data下面是否有名称包含ketech的文件夹,名称形式类似于com.android.ketech,有则删掉。
  5. 查看/data/system下面的package.xml文件,将包含ketech的项目删掉。
  6. Wipe Dalvik缓存。(方式多样,有些openrecovery自带,就不进行详细解释了)
  7. 重新安装即可。

希望能够帮到跟我一样倒霉的朋友。

### 解决 ADB 安装 APK 时出现的 INSTALL_FAILED_DEXOPT 错误 当遇到 `INSTALL_FAILED_DEXOPT` 错误时,这通常意味着设备在尝试优化新安装的应用程序 DEX 文件时遇到了问题。以下是几种可能的原因及解决方案: #### 清理缓存分区 清理设备上的 Dalvik 或 ART 缓存可以解决问题。可以通过重启进入恢复模式并清除缓存来实现这一点。 ```bash adb reboot recovery ``` 选择“擦除缓存数据”,然后重新启动系统。 #### 卸载现有版本 如果之前已经安装过相同包名的应用,则可能会发生冲突。先卸载旧版再试一次新的安装过程[^1]。 ```bash adb shell pm uninstall --user 0 com.huat.hostwithsecond ``` 注意命令中的参数 `--user 0` 是为了确保针对默认用户执行操作;对于多用户的环境来说很重要。 #### 使用 `-d` 参数强制降级安装 有时由于版本号较低而无法覆盖更新较高的应用程序实例。此时可利用 `-d` 开关允许降级安装。 ```bash adb install -d path_to_your_apk_file.apk ``` #### 确认目标架构匹配 确认编译出来的 APK 和测试手机 CPU 架构相兼容也很重要。比如 ARMv7 的二进制文件不能运行于 x86 设备上除非包含了相应的原生库支持[^3]。 #### 检查磁盘空间充足与否 存储不足也会引发此类错误。检查是否有足够的可用内部储存供 dexopt 工具工作。 ```bash adb shell df -h ``` 以上方法应该能够帮助克服大多数情况下由 `INSTALL_FAILED_DEXOPT` 导致的问题。不过具体原因还需视实际情况分析判断。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值