INSTALL_FAILED_DEXOPT при использовании GreenDao

Задний план

Я хотел упростить использование БД в приложении для Android.

Для этого я сравнил некоторые сторонние библиотеки, которые создают слой DAO.

Я придумал замечательную библиотеку под названием "GreenDao" (презентация о ней здесь). Веб-сайт показывает, что он быстрее, чем другие конкуренты (например, ORMLite), и оптимизирован для Android.

Эта проблема

По какой-то причине на каком-то устройстве (обычно на старых устройствах с ГБ) я получаю следующую ошибку консоли при попытке установить приложение:

Installation error: INSTALL_FAILED_DEXOPT
Please check logcat output for more details.
Launch canceled!

Я искал причину этой ошибки, но не мог найти, как ее решить. Многие жалуются на эту ошибку, но я не могу понять, почему она возникает, и что можно сделать.

Ошибка довольно распространенная и известная, но она никогда не упоминается как результат использования этой библиотеки, но когда я удаляю использование этой библиотеки, все работает нормально...

Также обратите внимание, что на более новых устройствах (таких как nexus 4) он устанавливается и работает просто отлично, и что сам образец также работает нормально, независимо от того, на каком устройстве я его тестировал.

Вопрос

Почему это происходит?

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

Может быть, я достиг предела кода, поддерживаемого приложениями для Android?

Сам файл jar занимает всего 87КБ...

Как я могу это решить?


person android developer    schedule 18.02.2014    source источник


Ответы (1)


Хорошо, я нашел проблему и решение:

Это не имеет ничего общего с GreenDao.

Это потому, что приложение использует слишком много банок, поэтому, возможно, у Android есть ограничение кода.

Решение состоит в том, чтобы либо удалить ненужные файлы jar, либо удалить много кода.

person android developer    schedule 18.02.2014
comment
по-видимому, слишком много :) Теперь мне интересно, что это за ограничение, и если это ошибка или что-то, что меняется между ОС Android. - person android developer; 19.02.2014
comment
Дело в том, что мое приложение также использует несколько банок и в будущем будет использовать еще больше банок. Поэтому меня интересует конкретное количество банок, которые вы используете, чтобы я знал, могу ли я попасть в беду. - person AlexS; 19.02.2014
comment
Дело не в количестве банок. это код внутри них. ознакомьтесь с этим постом, который я создал по этой проблеме: stackoverflow.com/questions/21878324/ - person android developer; 19.02.2014