Как экспортировать банки из проекта библиотеки для ссылки на проекты в Eclipse?

В нескольких проектах Android используется проект библиотеки Android. Теперь я добавил JAR (commons-lang.jar) в этот проект библиотеки. Я хочу экспортировать этот commons-lang.jar во все проекты, которые используют проект библиотеки. Я не могу заставить его работать, не дублируя банку со всеми ссылками на проекты.

Что я сделал до сих пор:

  1. Создал папку с именем libs в иерархии папок проектов библиотек.
  2. Скопировал JAR в эту папку libs.
  3. Добавлен этот JAR в Eclipse «Java Build Path» с «Добавить внешние JAR …» в проект библиотеки.
  4. На вкладке «Заказ и экспорт» выбран флажок слева от JAR для его экспорта.
  5. В проекте ссылок на странице «Добавить» на странице «Добавить».

Кажется, что JAR-файл commans-lang не экспортируется в проект библиотеки. Мне также нужно создать папку libs в проекте реферирования, добавить те же JAR-пути в путь сборки проекта ссылок. После этого все работает, но APK действительно содержит этот внешний JAR дважды.

Что случилось с моим подходом? Что мне делать в дополнение?

Спасибо заранее.

Solutions Collecting From Web of "Как экспортировать банки из проекта библиотеки для ссылки на проекты в Eclipse?"

Я считаю, что вы делаете это в Eclipse> предпочтениях> Java> Путь сборки> Пользовательские библиотеки. Затем, когда вы добавляете к нему файл jar, я считаю, что все проекты в рабочей области автоматически имеют эту банку в пути к классам.

Я пробовал то же самое, используя файл gson.jar.

  • Я поставил копию gson jar в проект TestAndroidLib и установил путь построения Java, чтобы включить его.
  • Я добавил ссылку на этот проект TestAndroidLib на TestAndroidApp.
  • Мне не нужно было дублировать gson jar в проекте приложения, чтобы использовать класс Gson.
  • Я мог запустить и отладить проект приложения.

То, что я нашел в свойствах проекта проекта приложения, заключается в том, что gson jar добавлен как часть Android Dependencies, как показано ниже. Вы можете проверить свойства своего проекта -> Java Build Path-> Libraries-> Android зависимости, чтобы увидеть, есть ли там банку, которую вы хотите использовать.

Похоже, что если у вас есть файлы jar в проекте Andoroid lib с правильной настройкой пути сборки, в проекте приложения, использующем проект lib, не требуется дополнительных настроек пути сборки.

Что я буду делать:

Начните с нуля (удалите все ссылки на проекты и ссылки на баночки, созданные вами из-за этой проблемы). Создайте новый проект библиотеки Android. Поместите банку в папку libs этого проекта. Пусть все проекты, для которых вам нужна банка, обратитесь к библиотечному проекту. Это должно сработать.

Мне интересно, что на самом деле происходит, когда вы заказываете и экспортируете. Похоже, вы вводите банку дважды, потому что внешняя ссылка, которую вы добавляете с помощью «Добавить внешние банки», – это изменение вашего файла .classpath в корне проекта), и все, что используется когда-либо созданным инструментом, автоматически принимает папку lib, которую вы Добавили также.

Ответ Айдана, вероятно, то, что вам нужно.

Есть еще несколько способов, которыми вы могли бы прикрепить эту банку с обычным ящиком.

Если это код, который вы контролируете и планируете изменить, вероятно, лучше открыть отдельный проект для этого кода и добавить проект commons как «Требуемый проект» в пути сборки. Вы можете добавить проект на вкладку Java Build Path – Projects. Это приведет к зависимости от текущего проекта, который вы работаете, и позволяете мгновенно изменять код commons.

Я вижу комментарий ниже об Android-библиотеках. Я бы не подумал, что затмение позволит только баночки для пользователя lib. Я помню несколько лет назад, создавая что-то для некоторых библиотек для нескольких приложений Swing, используя предложение Айдана.

Для небольшого развития Android, который я сделал, я создал шаблон maven / android, чтобы запустить мои проекты. Если вы не используете Maven, я уверен, что есть и другие плагины, которые будут автоматически зависеть от ваших зависимостей от библиотеки Android, поэтому вам не придется беспокоиться об этом.