APK ne sera pas installé: DalvikVM ne peut pas l'optimiser (l'échange d'octets et la vérification échouent)

Je reçois une erreur INSTALL_FAILED_DEXOPT (qui ne semble avoir rien à voir avec les autres questions qui ont été posées ici sur INSTALL_FAILED_DEXOPT) lorsque j'essaie d'installer mon application Android dans les conditions suivantes:

  1. Tout d'abord, l'application est installée sur un nouvel émulateur 2.3.3 créé à l'aide d'Eclipse et du plugin Android.
  2. Une version plus récente de l'application est installée sur la version précédente sur les émulateurs 2.3.3 et 2.2 préxistants à l'aide d'Eclipse comme ci-dessus.
  3. J'ai même essayé de cliquer sur la case à cocher "Essuyer les données utilisateur" lors du démarrage des émulateurs.
  4. Une version plus récente de l'application est installée sur la version précédente sur HTC G2 exécutant CyanogenMod 7.1 tous les soirs (2.3.5).
  5. Supprime la version précédente de l'application de G2 en utilisant "adb -d désinstaller com.jackcholt.reveal" puis a essayé d'installer la nouvelle version sur G2 en utilisant "adb -d install Reveal3.apk"

Chaque fois que j'ai essayé, j'ai reçu les erreurs suivantes dans LogCat:

  • Pourquoi Android ne conserve-t-il pas l'état de l'application après avoir appuyé sur le bouton Accueil si l'application a été exécutée en premier type depuis le Gestionnaire d'applications?
  • Comment créer un répertoire sur le stockage interne lors de l'installation de l'application Android?
  • Où le package d'application Android est-il installé sur le téléphone?
  • 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 

    Et la première chose que j'ai essayée était de changer le "Nom invalide" – 'menu_item_index'. Il se trouve vers la fin dans un fichier XML de définition de menu avec le contenu suivant:

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

    Que dois-je faire pour éviter l'erreur INSTALL_FAILED_DEXOPT?

  • Pourquoi Android ne conserve-t-il pas l'état de l'application après avoir appuyé sur le bouton Accueil si l'application a été exécutée en premier type depuis le Gestionnaire d'applications?
  • Comment créer un répertoire sur le stockage interne lors de l'installation de l'application Android?
  • Où le package d'application Android est-il installé sur le téléphone?
  • One Solution collect form web for “APK ne sera pas installé: DalvikVM ne peut pas l'optimiser (l'échange d'octets et la vérification échouent)”

    Vous ne savez pas si cela est lié, mais cela pourrait-il être causé par un fichier de sortie dex qui est trop grand pour la version d'Android sur laquelle vous utilisez?

    C'est-à-dire, le même travail binaire fonctionne-t-il sur une version supérieure de l'API de l'Android? (Si oui, alors cela est probablement causé par un trop grand nombre de problèmes de méthodes)

    Il y a beaucoup d'autres threads autour des défaites de dexopt, il semble que la seule réponse acceptée pour cela est de limiter le nombre de classes que vous utilisez; Est-ce que vous utilisez proguard?

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.