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

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

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

  • Создана папка с именем libs в иерархии папок проектов библиотек.
  • Скопировал JAR в эту папку libs.
  • Добавлен этот JAR в Eclipse "Java Build Path" с "Добавить внешние JAR..." в проект библиотеки.
  • На вкладке "Заказ и экспорт" установлен флажок слева от JAR для его экспорта.
  • В проекте ссылок на странице "Добавить" библиотеки "Android".

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

Что не так с моим подходом? Что мне делать дополнительно?

Большое спасибо заранее.

Ответ 1

Я считаю, что вы делаете это в Eclipse > preferences > Java > Build Path > User Libraries. Затем, когда вы добавляете к нему файл jar, я считаю, что все проекты в рабочей области автоматически имеют эту банку в пути к классам.

Ответ 2

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

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

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

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

Ответ 3

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

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

Ответ 4

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

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

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

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

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

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