当我尝试在以下条件下安装我的
Android应用程序时,我收到一个INSTALL_Failed_DEXOPT错误(这似乎与此处有关于INSTALL_Failed_DEXOPT的其他问题没有任何关系):
>首先,使用Eclipse和Android插件将应用程序安装到新创建的2.3.3模拟器中.
>如上所述,使用Eclipse在先前版本的2.3.3和2.2仿真器上安装了较新版本的应用程序.
>我甚至尝试在启动模拟器时单击“擦除用户数据”复选框.
>每晚运行CyanogenMod 7.1的HTC G2上安装了较新版本的应用程序(2.3.5).
>使用“adb -d uninstall com.jackcholt.reveal”从G2中删除了以前版本的应用程序,然后尝试使用“adb -d install Reveal3.apk”在G2上安装新版本
每次我尝试我在LogCat中收到以下错误:
D/PackageParser( 75): Scanning package: /data/app/vmdl352595685.tmp D/PackageManager( 75): Scanning package com.jackcholt.reveal I/PackageManager( 75): Unpacking native libraries for /data/app/com.jackcholt.reveal-1.apk D/installd( 35): DexInv: --- BEGIN '/data/app/com.jackcholt.reveal-1.apk' --- E/dalvikvm( 378): Invalid name: 'menu_item_reindex' E/dalvikvm( 378): Trouble with item 282 @ offset 0x17dd8 E/dalvikvm( 378): Cross-item verify of section type 0004 Failed E/dalvikvm( 378): ERROR: Byte swap + verify Failed E/dalvikvm( 378): Optimization Failed W/installd( 35): DexInv: --- END '/data/app/com.jackcholt.reveal-1.apk' --- status=0xff00,process Failed E/installd( 35): dexopt Failed on '/data/dalvik-cache/data@app@com.jackcholt.reveal-1.apk@classes.dex' res = 65280 W/PackageManager( 75): Package Couldn't be installed in /data/app/com.jackcholt.reveal-1.apk
我尝试的第一件事是更改“无效名称” – “menu_item_index”.最后在菜单定义XML文件中找到它,其中包含以下内容:
<?xml version="1.0" encoding="utf-8"?>
<menu android:id="@+id/shared_menu" xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:icon="@android:drawable/ic_menu_recent_history"
android:title="@string/menu_history"
android:id="@+id/menu_item_history"/>
<item android:icon="@android:drawable/ic_input_get"
android:title="@string/menu_bookmark"
android:id="@+id/menu_item_bookmark"/>
<item android:id="@+id/menu_item_prevIoUs"
android:icon="@drawable/prevIoUs_chapter"
android:title="@string/menu_prevIoUs"/>
<item android:id="@+id/menu_item_next"
android:icon="@drawable/next_chapter"
android:title="@string/menu_next"/>
<item android:icon="@android:drawable/ic_menu_set_as"
android:id="@+id/menu_item_download"
android:title="@string/menu_browser"/>
<item android:icon="@android:drawable/ic_menu_preferences"
android:id="@+id/menu_item_settings"
android:title="@string/menu_settings"/>
<item android:id="@+id/menu_item_note_browser"
android:title="@string/annot_brow"
android:icon="@android:drawable/ic_input_get"/>
<item android:icon="@android:drawable/ic_menu_more"
android:title="@string/more"
android:id="@+id/menu_extra">
<menu>
<item android:id="@+id/menu_item_download"
android:title="@string/menu_browser"/>
<item android:id="@+id/menu_item_note_browser"
android:title="@string/annot_brow"/>
<item android:title="@string/menu_help"
android:id="@+id/menu_item_help"/>
<item android:title="@string/menu_refresh_library"
android:id="@+id/menu_item_refresh_lib"/>
<item android:title="@string/menu_update"
android:id="@+id/menu_item_update"/>
<item android:title="@string/reset"
android:id="@+id/menu_item_reset"/>
<item android:title="@string/donate_menu"
android:id="@+id/menu_item_donate"/>
<item android:title="@string/menu_license"
android:id="@+id/menu_item_license"/>
<item android:id="@+id/menu_item_about"
android:title="@string/menu_about"/>
<item android:id="@+id/menu_item_reindex"
android:title="@string/reindex_books"/>
</menu>
</item>
</menu>
我需要做什么来避免INSTALL_Failed_DEXOPT错误?
解决方法
不确定这是否相关,但这可能是由一个dex输出文件导致的,该文件对于您运行的Android版本来说太大了?
即,相同的二进制文件是否在Android的更高API版本上工作? (如果是,则可能是由于方法问题导致的)
在dexopt故障周围有许多其他线程,似乎唯一可接受的答案是限制你正在使用的类的数量;你在用proguard吗?