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

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

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

Попробуйте использовать 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 .

Существует два варианта:

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

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

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

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

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

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

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

Intereting Posts
Уменьшите размер приложений Android Как установить исходную версию библиотеки Java в проекте Android Studio Проблема с рендерингом для Android с Intellij 13.1.3 OnLocationChanged () никогда не вызывал Android. Сохраняйте элемент списка ListView один раз, когда вы нажали Приложение не доступно для Nexus 7 в Google Play Как сделать FileProvider доступным для других приложений? «Проблема с записью вывода: Слишком много ссылок на поле: 70185; Max – 65536. Вы можете попробовать использовать опцию –multi-dex. "При создании Android-проекта Невозможно использовать сканер штрих-кода Google Асинхронная задача остановлена, когда приложение завершается (вызывается onDestroyed) Правильный способ использования IdlingResource в Espresso Android Для вызова требуется уровень API 14 (текущий минимум равен 11) Call Главная тема из Secondary thread в Java / Android Распределение Crashlytics с несколькими ароматами Различное поведение backstack между устройством Nexus 6 и эмулятором