Преимущества в Android для импорта библиотеки внутри и снаружи

Post ADT 17, не-Android-библиотеки должны быть включены либо в папки «libs» проекта, либо экспортированы через вкладку «Заказ и экспорт» в пути сборки. В чем разница (если есть) между импортом библиотеки извне :

External1

External2

И внутренне :

Internal2

Internal1

Есть ли преимущество в импорте библиотеки таким образом, что она включена в группу «Зависимости от Android»?

Как добавить внешние зависимости jar в пути сборки вашего проекта (внутренне или извне) не имеет никакого отношения к фактическому процессу сборки (более конкретно, на этапе компиляции и dex), все, что он делает, – это рассказать процесс сборки, где искать требуемый Банки на этапе компиляции и dex.

Элемент Android Dependencies показанный в окне Java Build Path - Libraries является еще одним абстрактным слоем, который плагин ADT используется для управления / группировки зависимостей jar. Где ваши внешние файлы jar (в вашем случае android-support-v4.jar) появляются (внутри или вне Android Dependencies ) в этом окне не имеют значения.

Начиная с r17, управление зависимостями значительно улучшилось, и рекомендуется использовать библиотеки libs / directory для хранения всех jar-зависимостей (см. Ваш внутренний путь), который рассматривается как подход к автоматизации (поскольку плагин ADT теперь становится более умным), см. Редакции Для ADT 17.0.0 :

Новые функции сборки

  • Добавлена ​​возможность автоматической настройки JAR-зависимостей. Любые файлы .jar в папке / libs добавляются в конфигурацию сборки (подобно тому, как работает система сборки Ant). Кроме того, файлы .jar, необходимые для проектов библиотек, также автоматически добавляются к проектам, которые зависят от этих проектов библиотеки. (больше информации)

Тем не менее, вы все равно можете использовать старый способ (см. Внешний вид), если хотите, который рассматривается как ручной подход (поскольку плагин ADT был глупым раньше), см. « Последние изменения для r17 Release :

Важно: если вы все еще ссылаетесь на библиотеки jar вручную вместо того, чтобы помещать их под libs / знать следующее:

  • Если проект является проектом библиотеки, эти библиотеки jar не будут автоматически видны проектам приложений. Вы действительно должны переместить их в libs /

  • Если проект является приложением, это может работать, но вы должны обязательно отмечать файлы jar как экспортированные.

Есть ли преимущество в импорте библиотеки таким образом, что она включена в группу «Зависимости от Android»?

Автоматизация и руководство с точки зрения управления зависимостями, автоматизация всегда считается более безошибочной, чем руководство в мире информатики.

Номер один, показывают остановку: «Я не могу поверить, что они не проверяли это», недостатком размещения внешних банок в каталоге libs является то, что вы не можете установить для них местоположение javadocs, поскольку опция показывает как «Нет» (Не изменяемый).

Поэтому я по-прежнему использую параметр «Экспорт» в свойствах сборки

Это связано с управлением библиотечной зависимостью Android. Подробности см. На странице http://tools.android.com/recent/dealingwithdependenciesinandroidprojects

Из часто задаваемых вопросов Eclipse

Внутренний ресурс находится в каком-то проекте в верстаке и поэтому управляется рабочим столом; Как и другие ресурсы, эти ресурсы могут быть версией управляемой рабочей станцией. Внешний ресурс не является частью рабочего места и может использоваться только по ссылке. Например, JRE часто является внешним и очень большим, и нет необходимости связывать его с системой VCM.

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

Если вы хотите избежать создания копии каждый раз, когда хотите использовать свою библиотеку, рассматривайте ее как внешний ресурс. Но, могу ли я предложить вам заглянуть в maven и плагин android maven , у maven есть немного кривой обучения (особенно если вы привыкли к скриптам сборки «make» или «ant»), но это очень стоит усилий ,