Intereting Posts
Android Build – эмулятор, застрявший на логотипе Android Как создать настраиваемый диалог с закругленными углами в android Как найти фрагмент, который был изменен динамически? Передать строку между двумя wifi напрямую подключенным пользователем в android, используя wifi direct? Видео Обрезка или масштабирование с определенной координатой? Как управлять состоянием Android MediaPlayer, ошибками и исключениями? Admob: Как загрузить AdRequest вне темы пользовательского интерфейса? Почему popbackstack вызывает onCreateView фрагмента? Наложение прозрачного GLSurfaceview на существующий вид в Android? В SQLite нет такой ошибки столбца на Android Дублированный идентификатор с фрагментом Анимация отмены анимации Почему методы жизненного цикла в классе активности определены с помощью спецификатора защищенного доступа Импортированный проект Android Studio без файла Build.gradle или settings.gradle Игнорировать «Иммерсивный режим»

APK не будет устанавливать: DalvikVM не может его оптимизировать (байтовый обмен и проверка не выполняется)

Я получаю ошибку INSTALL_FAILED_DEXOPT (которая, похоже, не имеет ничего общего с другими вопросами, заданными здесь об INSTALL_FAILED_DEXOPT), когда я пытаюсь установить приложение для Android в следующих условиях:

  1. Сначала приложение устанавливается на недавно созданный эмулятор 2.3.3 с использованием Eclipse и Android-плагина.
  2. Более новая версия приложения установлена ​​поверх предыдущей версии на предварительных эмуляторах 2.3.3 и 2.2 с использованием Eclipse, как указано выше.
  3. Я даже попытался щелкнуть флажок «Очистить пользовательские данные» при запуске эмуляторов.
  4. Более новая версия приложения установлена ​​поверх предыдущей версии на HTC G2, работающей на CyanogenMod 7.1 в ночное время (2.3.5).
  5. Удаленная предыдущая версия приложения из G2 с помощью «adb -d uninstall com.jackcholt.reveal» затем попыталась установить новую версию на G2 с помощью «adb -d install Reveal3.apk»,

Каждый раз, когда я пытался, я получил следующие ошибки в 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, на которой вы работаете?

Т.е. делает ли тот же двоичный файл более высокой версией API для Android? (Если да, то это, вероятно, вызвано слишком многими проблемами методов)

Есть множество других потоков вокруг ошибок dexopt, кажется, что единственным приемлемым ответом для этого является ограничение количества классов, которые вы используете; Вы используете proguard?