Я пытаюсь интегрировать свое приложение с Box, Dropbox и Google Диском. Все 3 из этих услуг требуют нескольких сторонних банках. Кроме того, в моем приложении уже требуются несколько сторонних баннеров. Теперь, когда я пытаюсь запустить приложение из eclipse, я получаю следующую ошибку:
Невозможно выполнить идентификатор метода dex: не в [0, 0xffff]: 65536 Преобразование в формат Dalvik не удалось: невозможно выполнить идентификатор метода dex: не в [0, 0xffff]: 65536
Кажется, что эта ошибка возникает из-за того, что в моем приложении слишком много методов. Я довольно уверен, что основная часть этих методов принадлежит сторонним банкам, поэтому нереально попытаться решить эту проблему, упростив мой код. Я нашел эти два предложения в Интернете.
-
добавить
dex.force.jumbo=true
в project.properties(и использовать adt-версию 21). Я сделал это, но все еще получаю ошибку. -
Используйте несколько файлов dex, как описано здесь: http://android-developers.blogspot.co.il/2011/07/custom-class-loading-in-dalvik.html. Вероятно, это единственный вариант, но я не понимаю, как это применимо в моем случае. Проблема в том, что такие сервисы, как Drive, имеют слишком много зависимостей. Не будет ли это решение требовать, чтобы я изменил источник Drive, чтобы использовать перегиб при обращении к его зависимостям? (это явно не вариант).
-
Использовать proguard для сжатия удалить неиспользуемый код/методы. Экспорт моего приложения с помощью proguard действительно работает, и интеграция служб документов работает как ожидается на устройстве > 4.0. Однако при тестировании на устройстве 2.3 бросаются вызовы classnotfound.
Итак, я надеюсь на некоторые советы по этому вопросу. Является ли вариант 2 решением для моего дела? Есть ли другое решение, которое я должен рассмотреть?