我正在使用 Android 中的 ccr4j API,所以当我运行我的项目时,它会抛出一个错误,例如:
安装应用程序时出错(INSTALL_FAILED_DEXOPT)
我也从网络和同一站点找到,都尝试过,
1. 从设备上卸载了相同的应用程序。
2. 使用擦除用户数据运行模拟器。
但仍然出现同样的错误。
所以有人知道为什么它会抛出这种错误吗?
我正在使用 Android 中的 ccr4j API,所以当我运行我的项目时,它会抛出一个错误,例如:
安装应用程序时出错(INSTALL_FAILED_DEXOPT)
我也从网络和同一站点找到,都尝试过,
1. 从设备上卸载了相同的应用程序。
2. 使用擦除用户数据运行模拟器。
但仍然出现同样的错误。
所以有人知道为什么它会抛出这种错误吗?
这很可能与 classes.dex 的大小有关。在任何超过 5mb 的情况下,ICS 之前的 dexopt 都会失败。检查您的 apk 中 classes.dex 的大小。最好看看你的方法计数是多少,因为 dex 有 65536 个方法/字段限制。
我有同样的问题。检查 classes.dex 文件,它大约是 7mb。我会尝试找到解决方案。我希望 Facebook 的解决方案也能解决我的问题。
顺便感谢@Jared 提供的信息。
https://www.facebook.com/notes/facebook-engineering/under-the-hood-dalvik-patch-for-facebook-for-android/10151345597798920
编辑 1:我已经通过使用 proguard 优化解决了这个问题。我之前的 classes.dex 文件是 7mb 左右,经过 proguard 优化后变成了 4mb。现在我可以在 2.2 和 2.3 设备上运行这个经过混淆和优化的 apk。
编辑 2:官方 Google Multi Dex 支持是解决此问题的最佳解决方案。https://developer.android.com/tools/building/multidex.html
找到 Android SDK 文件夹。(通常C:\User\AppData\Local\Android\sdk
)删除以点(。)开头的文件夹,它们是临时下载文件。然后从 SDK Manager 中删除Android Emulator 。然后以管理员身份运行 Android Studio,然后再次下载并安装Android Emulator。并确保您已安装Intel H.A.X.M.
. 现在您可以创建模拟器并使用它而不会出错。