У меня есть очень большой проект Android с несколькими большими сторонними jar-файлами (в виде библиотек Android).
Я считаю, что достиг максимального количества методов Dex (компиляция через eclipse):
[2012-11-18 02:28:45 - Найти в файлах] Dx-обработка class.dex...
[2012-11-18 02:28:48 - Dex Loader] Невозможно выполнить dex: невозможно объединить новый индекс 66774 в инструкцию без больших размеров!
[2012-11-18 02:28:48 - Найти в файлах] Ошибка преобразования в формат Dalvik: невозможно выполнить dex: невозможно объединить новый индекс 66774 в инструкцию без больших размеров !
Воспользовавшись инструментами SDK 21 (инструменты платформы 16), я отредактировал свой основной проект project.properties, установив dex.force.jumbo=true
.
Этот флаг позволил мне сгенерировать APK. Но я не мог установить его правильно (как на физическом, так и на эмуляторе). Кажется, произошел сбой оптимизатора dex:
11–18 20:11:05.338: I/PackageManager(103): Запуск dexopt: com.mypackage.myapp
11–18 20:11:08.577: E/dalvikvm(868): Неверный метод method_idx : 0x2ae0, затем 0x1
11–18 20:11:08.577: E/dalvikvm(868): Проблема с элементом 1544 @ offset 0xf7ae24
11–18 20:11:08.577: E/dalvikvm(868): Обмен секции типа 2006 не удалось
11–18 20:11:08.577: E/dalvikvm(868): ОШИБКА: обмен байтами + проверка не удалась
11–18 20:11:08.597: E/dalvikvm(868): Ошибка оптимизации
11-18 20:11:08.597: W/installd(39): DexInv: --- END '/data/app/com.mypackage.myapp-1.apk' --- status=0xff00, процесс не выполнен
11-18 20:11:08.597: E/installd(39): ошибка dexopt в '/data/dalvik-cache/data@[email protected]@classes.dex' res = 65280
11-18 20:11:08.697: W/PackageManager(103): Не удалось установить пакет в /data/app/com.mypackage.myapp-1.apk
11-18 20 :11:09.018: D/dalvikvm(103): GC_EXPLICIT освободил 1698K, 13% освободил 17034K/19463K, приостановил 7ms+135ms
11-18 20:11:09.068: D/AndroidRunt ime(780): выключение виртуальной машины
Пытаюсь ли я использовать флаг dex.force.jumbo
не по назначению, или эта ошибка непредсказуема?
Если да, то есть ли лучшая стратегия для создания проекта, включающего очень большое количество классов/методов?