Проект Eclipse Android, как ссылаться на библиотеку в рабочей области?

Я выполнил следующие шаги, которые я нашел здесь (не могу найти URL прямо сейчас, извините), чтобы преобразовать мой проект Android в Eclipse в макет, где 99,9% моего кода находится в проекте библиотеки, а затем у меня есть 2 других проекты оболочки в том же рабочем пространстве, которые в основном представляют собой файлы AndroidManifest.xml и несколько файлов ресурсов. Это было сделано, поэтому я могу поддерживать 2 сборки одного и того же проекта, с некоторыми незначительными изменениями текста и значков между 2. Имя приложения также отличается, поэтому я могу публиковать оба на Android Market в то же время.

С тех пор, как я это сделал, примерно каждые 10 раз компилируюсь, может быть, раз в день или два, я получаю "dalvik error 1" и что-то вроде "Access уже существует" (Access - это имя первой единицы Java в моей проект библиотеки).

Чтобы "обойти" проблему, я перехожу к пути Java Build для моего stub-проекта, который я пытаюсь создать, и удалите JAR файл из моей основной библиотеки со вкладки библиотек. Тогда я могу построить без ошибки.

Затем через некоторое время (может быть, 1 или 2 дня) я получу ошибку о пропущенных классах при компиляции моего stub-проекта (а не моей библиотеки). Поэтому я вернусь к пути Java Build и верну ссылку на JAR файл, и все будет хорошо снова в течение 1 или 2 дней, затем я вернусь к той же ошибке, что и раньше.

Это только известная проблема и что-то, что мне нужно сделать, или я могу решить путем реструктуризации моих проектов/рабочих пространств? В настоящее время у меня есть:

Lib Project - только 2 libs на пути сборки: Android 2.1 и com.android.ide.eclipse.adt.LIBRARIES

Первый проект-заглушка, который использует выше lib, имеет те же 2 библиотеки, что и выше, плюс иногда я использую "Добавить JAR", чтобы включить JAR из вышеупомянутой папки bin \.

Второй проект-заглушка - те же самые библиотеки, что и первый проект-заглушка

Должен ли я ссылаться на JAR из моего "проекта lib", используя одну из других вкладок в настройках пути сборки? Может быть, вкладка "Проект" или вкладка "Источник"? В настоящее время я не располагаю ничем из других областей.

Когда я попадаю в странное состояние, выполнение "чистого проекта" также не помогает, я несколько раз пробовал это и открывал/закрывал среду IDE между очисткой и отсутствием разрешения.

На этом этапе мы находимся на заключительных этапах тестирования, поэтому моя повседневная повседневная задача:

  • Сделайте небольшое обновление (исправление ошибок) в проекте LIB

  • Используйте мастер публикации для экспорта обоих проектов и обновления Android Market и других мест, где хранятся файлы APK.

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

Ответ 1

Классический способ Eclipse/Java

Добавить библиотеку (рабочее пространство)

  • Щелкните правой кнопкой мыши проект, который вы хотите вставить.
  • Нажмите Properties.
  • Выберите Java Build Path.
  • Выберите вкладку Libraries.

Теперь это зависит от того, как вы компилируете свою библиотеку. Поэтому либо выполните Add JARs..., либо Add Class Folder. Выберите вариант external для использования внешнего источника. Что это.

Добавить проект рабочей области

  • Щелкните правой кнопкой мыши проект, который вы хотите вставить.
  • Нажмите Properties.
  • Выберите Java Build Path.
  • Выберите вкладку Projects.

Нажмите Add... с правой стороны, и все будет готово.

Дополнительный способ Android

Необходимы два шага:

  • Отметьте проект, который вы хотите использовать в качестве проекта библиотеки
  • Ссылка на отмеченный проект

Отметить проект библиотеки

Щелкните правой кнопкой мыши свой проект и выберите Properties. Выберите Android слева и установите флажок IsLibrary. Готово.

Ссылка на отмеченный проект

Щелкните правой кнопкой мыши свой проект и выберите Properties. Выберите Android слева и Add... ваш отмеченный проект. Он будет добавлен в список и будет готов к использованию. Теперь вы можете получить доступ ко всем классам и ресурсам (например, drawables, strings) из ссылочного, отмеченного проекта. Удивительно, а?:)