Динамическая загрузка классов с помощью метода Deell для IntelliJ - 64K

Я работаю над проектом, который быстро приближается к пределу метода 64K для файлов dex. Это сообщение Android Developer blog (с июля 2011 года) объясняет, как получить динамическую загрузку классов, работая с построением командной строки, основанную на Ant, но не изучает, как заставить его работать из среды IDE (помимо того, что он не будет работать в Eclipse).

Я огляделся и ничего не нашел, чтобы заставить эту систему работать в IntelliJ. Поддерживает ли IntelliJ создание приложений с несколькими файлами dex? Если да, то как его настроить?

Ответ 1

Multidex кажется лучшим (и самым быстрым) вариантом для обращения к пределу метода 65K. Google имеет отличную документацию по настройке Multidex здесь.

Ответ 2

Попробуйте использовать ProGuard, чтобы вырезать неиспользуемые классы и методы из вашего проекта, и вы должны (надеюсь) найти, что вам не нужно несколько dex.

Если вы это сделаете: IntelliJ и Eclipse - это только IDE - они напрямую не строят ваш код, поэтому вам нужно будет определить, как строится ваш проект - скорее всего, Ant или Gradle.

Если ваш проект является проектом Gradle, тогда в корне проекта будет файл build.gradle. Если это так, вам нужно будет посмотреть, как сделать то же самое с плагином Android Gradle, хорошим местом для начала было бы http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Manipulating-tasks.

Ответ 3

Есть два варианта:

  • Разбить существующий класс. Или
  • Переместите свой класс в другой проект и создайте его как библиотеку (.jar). И, как сообщают в блоге (упомянутые в запросе), используйте свой класс для загрузки этой библиотеки (.jar) в свой проект отдельно.

Ответ 4

Можете ли вы предоставить подробную информацию о своем проекте?

У меня была такая же проблема после подключения библиотеки PlayN к моему проекту. Сначала я прочитал все сообщения, которые вы упомянули и связали с ними, но в конце концов я решил проблему, исключив часть классов из зависимого бара Pythagoras (я удалил пакет pythagoras.d, который для "double", поскольку pythagoras.f, float ", вместо него использовался в PlayN), который был одной из самых больших зависимостей в PlayN.

Возможно, вы можете найти подобное слабое место в зависимостях проекта.

Ответ 5

Eclipse может запускать внешние скрипты ant, но это не поможет с инструментами. Лучшая рекомендация - Android Studio и Gradle, так как все команды запускаются вне среды IDE, затем переносите это ant script http://code.google.com/p/android-custom-class-loading-sample/source/browse/trunk/android-custom-class-loading-sample/build.xml to gradle.

Следите за официальной поддержкой в ​​соответствии с: https://groups.google.com/forum/#!topic/gradle-android-plugin-users/zG_xUeVaV7s