android – APK无法安装:DalvikVM无法优化它(字节交换和验证失败)

前端之家收集整理的这篇文章主要介绍了android – APK无法安装:DalvikVM无法优化它(字节交换和验证失败)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当我尝试在以下条件下安装我的 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_re‌index'
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_re‌index" 
                android:title="@string/reindex_books"/>
        </menu>
    </item>
</menu>

我需要做什么来避免INSTALL_Failed_DEXOPT错误

解决方法

不确定这是否相关,但这可能是由一个dex输出文件导致的,该文件对于您运行的Android版本来说太大了?

即,相同的二进制文件是否在Android的更高API版本上工作? (如果是,则可能是由于方法问题导致的)

在dexopt故障周围有许多其他线程,似乎唯一可接受的答案是限制你正在使用的类的数量;你在用proguard吗?

猜你在找的Android相关文章