2011-09-07 3 views
7

Ricevo un errore INSTALL_FAILED_DEXOPT (che non sembra avere nulla a che fare con le altre domande che sono state poste qui su INSTALL_FAILED_DEXOPT) quando provo ad installare la mia app per Android alle seguenti condizioni:APK non installa: DalvikVM non può ottimizzarlo (scambio byte e verifica fallita)

  1. Per prima cosa l'app viene installata su un emulatore 2.3.3 appena creato utilizzando Eclipse e il plug-in Android.
  2. Una versione più recente dell'app viene installata sulla versione precedente su emulatori pre-esistenti 2.3.3 e 2.2 utilizzando Eclipse come sopra.
  3. Ho anche provato a fare clic sulla casella di controllo "Pulisci dati utente" all'avvio degli emulatori.
  4. Una versione più recente dell'app viene installata sulla versione precedente su HTC G2 con CyanogenMod 7.1 nightly (2.3.5).
  5. Rimosso versione precedente dell'app da G2 utilizzando "adb -d disinstallazione com.jackcholt.reveal" poi ha tentato di installare la nuova versione sul G2 utilizzando "adb install -d Reveal3.apk"

Ogni volta ho provato di aver ricevuto i seguenti errori in 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/[email protected]@[email protected]' res = 65280 
W/PackageManager( 75): Package couldn't be installed in /data/app/com.jackcholt.reveal-1.apk 

E la prima cosa che ho provato è stato cambiare il "Nome non valido" - 'menu_item_index'. Si trova verso la fine in un file XML di definizione di menu con il seguente contenuto:

<?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> 

Che cosa devo fare per evitare l'errore INSTALL_FAILED_DEXOPT?

+0

Hai risolto questo problema? –

risposta

0

Non sono sicuro se questo è correlato, ma ciò potrebbe essere causato da un file di output dex che è troppo grande per la versione di Android su cui si sta eseguendo?

vale a dire, lo stesso binario funziona su una versione API più alta di Android? (se sì, è probabile che sia causato da troppi problemi di metodo)

ci sono molti altri thread attorno ai guasti di dexopt, sembra che l'unica risposta accettata sia limitare il numero di classi che si stanno utilizzando; stai usando proguard?