Скомпилированное обновление связанного проекта Java не обновляет проект библиотеки Android

У меня есть проект Android (A), который является моим основным приложением, он ссылается на проект библиотеки Android (B). Библиотечный проект ссылается на стандартный проект Java (C), который является моей стандартной библиотекой для многих проектов Java и Android. Я обозначу эти три проекта как A, B и C.

Моя проблема заключается в том, что если я внесу изменения в проект C, он будет автоматически скомпилирован, но B не скомпилируется, поэтому A не увидит изменений. Единственный способ сделать это — очистить B вручную. Есть ли в Eclipse способ заставить B перекомпилировать, когда C компилируется?

Использование Eclipse 3.6.2 с ADT 14 и SDK 14.


person JPM    schedule 26.10.2011    source источник
comment
Вы случайно не используете ADT 14 (последнюю) или более раннюю версию ADT (12 или ниже)? Просто библиотеки обрабатываются совершенно по-другому в ADT14, понимаете.   -  person    schedule 27.10.2011
comment
Да, я запускаю ADT 14, и как обрабатываются библиотеки по сравнению с предыдущими версиями?   -  person JPM    schedule 27.10.2011
comment
Отправил отчет об ошибке для этого code.google.com/ p/android/проблемы/   -  person JPM    schedule 27.10.2011
comment
Вы можете проверить это сами, загрузив 3 проекта с сайта matthewscorp.com/download/test.zip.   -  person JPM    schedule 27.10.2011
comment
Разница между ADT12 и 14 (13 никогда не было) заключается в том, что 12 приносит исходный код для библиотек Android и компилирует, тогда как 14 компилирует библиотеки Android отдельно и переносит их в ваши проекты в виде файлов JAR. Я предполагаю, что, поскольку он не видит изменений в библиотечном проекте (B), он не переделывает (B) банку. Решением будет «Очистить» ваши проекты, что заставит их все перестроить — обратите внимание, что вам нужны они в алфавитном порядке (сначала библиотеки) или с помощью вкладки «Настройки» / «Общие» / «Порядок сборки», чтобы указать, какие библиотеки скомпилировать в первую очередь.   -  person    schedule 28.10.2011
comment
Пока нет обновлений для отчета об ошибке, который я отправил   -  person JPM    schedule 17.11.2011


Ответы (3)


У меня также была эта проблема с ADT 14. В моем случае у меня меньше косвенности (проект A - это PLAIN java-библиотека (а не библиотека для Android), проект B - это приложение для Android).

Что было действительно весело, так это то, что у меня было два проекта «Б» (два приложения для Android), и одно работало. Другой был точной копией (с небольшими изменениями для бета-версии), включая копию файлов проекта.

Он скомпилировался нормально, но не смог упаковать файлы библиотеки в бета-версии.

Я удалил проект (не удаляя файлы) и снова добавил его. Затем я также перенастроил путь сборки приложения и удалил библиотеку Java. Затем я перенастроил его снова и снова добавил.

Clean/Build, и он снова начал их правильно упаковывать.

Я также сделал трюк с порядком сборки, упомянутый ранее... он сам по себе не помог, но, возможно, способствовал более позднему обновлению eclipse (убедился, что проект библиотеки построен раньше других).

person Tony K.    schedule 24.11.2011

У меня была точно такая же проблема с ADT 20. Сопоставив комментарии с принятым ответом, я обнаружил, что перемещение проекта библиотеки на первое место в Свойствах проекта -> Путь сборки Java -> Порядок и экспорт решило это.

person kichik    schedule 09.09.2012

Я попробовал принятый ответ с проектом B (android), ссылающимся на проект A (обычный java). После удаления и повторного добавления проекта B в рабочую область, удаления проекта A из требуемых проектов проекта B, повторного добавления проекта B, отметки проекта B в порядке/экспорте проекта A и перемещения его наверх и, наконец, очистки/сборки всего, мой проблема не решилась. После очистки и сборки все обновилось. Но когда IU что-то изменила в A, изменения не были видны в B.

Мое решение:

В пути сборки проекта Android: - выберите вкладку источника - нажмите Источник ссылки - выберите папку src проекта java. Назовите его linkedLibrarySource — примените, чистая сборка — успех

Это решение далеко от идеального, и я советую сначала попробовать другие решения.

Есть недостаток: eclipse теперь добавляет папку linkedLibrarySource в ваш проект Android. Он содержит те же файлы, что и папка src вашей библиотеки. Eclipse видит их разными. Это означает, что вы можете редактировать один и тот же файл в двух местах, вызывая конфликты. Так что не трогайте linkedLibrarySource!

Я использую АДТ 20

person Nino van Hooff    schedule 06.01.2013