Ответ 1
Я считаю, что вы делаете это в Eclipse > preferences > Java > Build Path > User Libraries. Затем, когда вы добавляете к нему файл jar, я считаю, что все проекты в рабочей области автоматически имеют эту банку в пути к классам.
В нескольких проектах Android используется проект библиотеки Android. Теперь я добавил JAR (commons-lang.jar) в этот проект библиотеки. Я хочу экспортировать этот commons-lang.jar во все проекты, которые используют проект библиотеки. Я не могу заставить его работать, не дублируя банку со всеми проектами ссылок.
Что я сделал до сих пор:
Кажется, что JAR файл commans-lang не экспортируется в проект библиотеки. Мне также нужно создать папку libs в проекте реферирования, добавить те же JAR-пути в путь сборки проекта ссылок. После этого все работает, но APK действительно содержит этот внешний JAR дважды.
Что не так с моим подходом? Что мне делать дополнительно?
Большое спасибо заранее.
Я считаю, что вы делаете это в Eclipse > preferences > Java > Build Path > User Libraries. Затем, когда вы добавляете к нему файл jar, я считаю, что все проекты в рабочей области автоматически имеют эту банку в пути к классам.
Я попробовал то же самое, используя файл gson.jar.
Что я нашел в свойствах проекта проекта приложения, так это то, что gson jar добавлен как часть Android Dependencies, как показано ниже. Вы можете проверить свойства своего проекта → Java Build Path- > Libraries- > Android зависимости, чтобы увидеть, есть ли там банку, которую вы хотите использовать.
Кажется, что если у вас есть файлы jar в проекте Andoroid lib с правильной настройкой пути сборки, в проекте приложения, использующем проект lib, не требуется дополнительных настроек пути сборки.
Что я буду делать:
Начните с нуля (удалите все ссылки на проекты и ссылки на jar, созданные из-за этой проблемы). Создайте новый проект библиотеки Android. Поместите банку в папку libs этого проекта. Пусть все проекты, для которых вам нужна банка, обратитесь к библиотечному проекту. Это должно работать.
Мне интересно, что на самом деле происходит, когда вы заказываете и экспортируете. Похоже, вы вводите банку дважды, потому что внешняя ссылка, которую вы добавляете с помощью "Добавить внешние банки", - это изменение вашего файла .classpath в корневом каталоге проекта), и все, что используется когда-либо созданным инструментом, автоматически принимает папку lib, которую вы добавили также.
Ответ Айдана, вероятно, то, что вам нужно.
Есть еще несколько способов, которыми вы могли бы присоединить эту банку с общим ящиком.
Если это код, который вы контролируете и планируете изменить, вероятно, лучше открыть отдельный проект для этого кода и добавить проект commons как "Требуемый проект" в пути сборки. Вы можете добавить проект на вкладку Java Build Path - Projects. Это повлечет за собой зависимость от текущего проекта, который вы работаете, и позволяете мгновенно изменять код commons.
Я вижу комментарий ниже об Android-библиотеках. Я бы не подумал, что затмение позволит только баночки для пользователя lib. Я помню несколько лет назад, создавая что-то для некоторых библиотек для нескольких приложений Swing, используя предложение Aidan.
Для маленького развития Android, которое я сделал, я создал шаблон maven/android, чтобы запустить мои проекты. Если вы не используете Maven, я уверен, что есть и другие плагины, которые автоматически займутся вашими зависимостями в библиотеке Android, поэтому вам не придется беспокоиться об этом.