Intereting Posts
Открыть область с новой конфигурацией realmconfiguration Android: анимировать прямоугольник ActionBar выходит из экрана, когда появляется клавиатура Как автоматически перезапустить службу, даже если пользователь закроет ее? Контекст Android в тестировании без активности Экспорт проекта eclipse в виде градиента Environment.getExternalStoragePublicDirectory предоставляет внутреннее хранилище Android подписанное приложение ClassNotFoundException Android-цель useLevel в теге формы Android: повторное использование встроенных представлений в gridview IllegalArgumentException: Не удалось найти корень конфигурации, содержащий xxx на FileProvider.getUriForFile Как реализовать асинхронный обратный вызов с использованием сетевой библиотеки Square's Retrofit Выполняется ли запуск в службе в потоке пользовательского интерфейса Ползунок в приложении для Android Как отобразить все данные таблицы базы данных в TextView в андроиде, используя SQLite

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?