В eclipse невозможно сослаться на проект библиотеки Android в другом проекте Android


104

Когда я писал этот вопрос, мне удалось его решить, поэтому повторите его здесь для других. Вот начальная проблема:

Я создал очень простой проект библиотеки, на который хочу сослаться в другом проекте. Я делал это ранее без проблем, поэтому не совсем уверен, почему на этот раз это не работает. У меня есть:

  1. Отметил проект библиотеки через свойства проекта. В default.propertiesфайле есть такой набор:android.library=true

  2. В другом моем проекте добавлена ​​ссылка на мой проект библиотеки через свойства проекта. В default.propertiesфайл добавлена ​​ссылка, как и ожидалось, т.е.android.library.reference.1=K:/android_test_ws/applicationRegistrar

  3. Зеленая галочка напротив проекта библиотеки, на которую имеется ссылка, сначала становится зеленой, а затем меняется на красный крест.

Это означает, что в проекте библиотеки должно быть что-то не так / отсутствует, но я не знаю что. Мой проект библиотеки по этому поводу НАМНОГО проще, чем предыдущий, который я создал.


Это решение помогло в моем случае: stackoverflow.com/questions/9283040/… Надеюсь, это кому-то поможет,
Абир Сул

Ответы:


160

Хорошо. Вот решение, которое я нашел, когда искал файл default.properies для ссылающегося проекта (не библиотеки) в моей файловой системе. Хотя ссылающийся проект находился в той же рабочей области eclipse, что и проект библиотеки, фактические файлы находились где-то еще в файловой системе, т.е. они не находились в той же родительской папке проекта библиотеки. Как только я поместил ссылающийся проект в ту же физическую папку, что и проект библиотеки, все прошло нормально.

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

Изменить: имя проекта должно совпадать с именем папки в файловой системе. То, что вы видите в Project Properties-> Android-> Library Reference, - это относительный путь к файловой системе.


3
Также хочу добавить, что для этого не подходят символические ссылки. Все мои проекты хранились в той же папке, что и друг друга, в другом месте (куда я помещаю то, что хочу зарезервировать), а затем кучу символических ссылок в папке моей рабочей области на эти папки. Таким образом, все они были в одной папке друг с другом в обоих местах, однако использование символических ссылок все испортило. Как только я загрузил настоящую папку в качестве базовой рабочей области, все было в порядке.
Zulaxia

7
+1 Для того, чтобы сформулировать это УЖАСНОЕ поведение комбинации Eclipse / ADT. К вашему сведению, даже размещение обоих проектов в одной физической папке не помогает, если эта папка находится в общей папке Samba . Ugrrr ...
an00b

20
Иногда Eclipse удаляет ссылку, перезапускает eclipse и снова добавляет, теперь он должен работать.
Warpzit

Это было проблемой для моих проектов, которые принадлежали и находились в одном рабочем пространстве. Импортировал проект в ту же рабочую область, что и библиотека, и все заработало. Спасибо за ответ.
Jayshil Dave 05

Убедитесь, что ваше рабочее пространство и библиотека находятся в одной папке. Сделал ошибку при повторной загрузке ADT и создал проект в рабочей области C: \ users, а не в моей реальной рабочей области. Излишне говорить, что еще раз проверьте, что ваш проект и ваша библиотека находятся в одном рабочем каталоге!
Garbit

11

Убедитесь, что оба проекта находятся в одном рабочем пространстве. Для этого при импорте проектов убедитесь, что установлен флажок «копировать проект в рабочую область».


1
Как я могу использовать тот же проект библиотеки в другом проекте. Если я так сделаю, то появится красный крестик .. @Karthik
Шилендра Мадда

10

та же проблема возникнет, если ваш проект библиотеки находится в другом разделе от вашего текущего рабочего пространства. У меня сейчас такая же проблема. Мой источник git находится в C :, и я просто перемещаю свою рабочую область в D :, и все начинает рушиться.


4
Если основной и библиотечный проекты находятся на разных дисках , кажется, что Eclipse не может преобразовать путь ссылки из абсолютного в относительный, и Eclipse это не устраивает (зеленая галочка превращается в красный крест).
Панг

у меня тоже сработало. Я заменил упомянутый проект на том же диске (H :), и теперь все в порядке
Tobia

4

Самый простой способ получить правильные пути к библиотекам - использовать графический интерфейс Eclipse для добавления библиотеки, как показано на следующем снимке экрана, и позволить Eclipse позаботиться о том, чтобы указать правильные относительные пути в project.properties. Это обычная установка, когда ваши проекты библиотеки размещаются в каталогах, сильно отличающихся от ваших основных проектов, в которых используется библиотека. Этот метод будет работать, если «проект библиотеки» и проект, использующий его, находятся в одной и той же «рабочей области» затмения (им «не обязательно» находиться в одной родительской папке): введите описание изображения здесь


4
Проблема в том, что библиотека и проект находятся на разных дисках / разделах ... см. Списки ошибок выше. С вами все в порядке, потому что путь к вашей библиотеке показывает относительные пути вместо полных путей DOS ...
kenyee

3

Убедитесь, что проект библиотеки помечен как «Is Library» - щелкните правой кнопкой мыши проект библиотеки - свойства - Android - установите флажок «Is Library» - в project.properties проекта библиотеки у вас должна быть новая запись: «android .library = true. Теперь добавьте его в нужный проект, как описано в сообщении ниже (сообщение со встроенным изображением - от Nilesh Pawar).


1
Это отлично сработало для меня. Непонятная часть заключается в том, что я думаю, что расположение этого флажка «Библиотека». Не интуитивно понятно, что на самом деле это выбор цели для текущей сборки приложения / библиотеки, а не переключатель параметров для включаемых библиотек.
EtienneSky

3

Эта ошибка упоминается здесь несколько раз 27199 , 35786 , 36460 и 38052

Может, голосуя за них, когда-нибудь это исправят ...


2

Еще одно наблюдение по тому же вопросу.

Для меня два проекта находились в одной родительской папке и были локальными внутри рабочего пространства. Даже тогда проблема продолжалась.

Я отредактировал файл "project.properties" и поместил абсолютный путь (с косой чертой '/' для разделителя) проекта библиотеки. Сохранил и закрыл. Затем перешел в диалоговое окно свойств проекта, удалил библиотеку (в которой все еще отображался крестик, но с путем абс) и добавил ее как обычно. На удивление проблема решена, проект компилируется и запускается.

Это действительно странно и должно быть ошибкой ADT. Я использую ADT версии 20.0.2


+1. Столкнулся с этой проблемой при переключении библиотек с одинаковыми именами. Похоже, что eclipse (или ADT) пытается ссылаться на старую и терпит неудачу. Помогает перезапуск Eclipse. (Ubuntu 12.04, Eclipse Indigo, ADT 21.0.0)
Лютни

2

когда разработчик ссылается на facebook или любой другой проект библиотеки, сначала очистите проект от eclipse-> project-> clean project. которые хотите разрешить ошибку красного креста на экране привязки.


2

Для меня я просто перезапускаю eclipse, и добавленная библиотека работает нормально.

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

Итак, вы можете попробовать перезапустить затмение. Удачного кодирования ....


1

Обходным решением для меня было

  1. Создать новое рабочее пространство
  2. Импортировать проект библиотеки в эту рабочую область
  3. Импортировать желаемый проект в эту рабочую область
  4. Наличие в проекте и библиотеке одной и той же целевой версии ОС Android.
  5. Проект справочной библиотеки в моем проекте

решил мою проблему


Создание нового рабочего пространства также решило проблему. Также нужно очистить проекты.
Омер Джансизоглу

1

У меня была такая же проблема, когда я пытался изменить свое рабочее пространство, поэтому это мое решение:

  1. импортировать и копировать все данные проекта, включая проект библиотеки, в рабочую область
  2. удалите ссылку на старый проект, щелкнув правой кнопкой мыши проект -> Свойства -> Android -> Библиотека, выберите поврежденную библиотеку (чтобы я ее называл) и выберите Удалить
  3. сначала очистите проект (чтобы обновить свойства проекта ur)
  4. перейдите в Свойства проекта библиотеки -> Android -> Библиотека и проверьте библиотеку, если она не нажмите Применить, затем ОК
  5. если проект библиотеки уже отмечен, сначала снимите флажок, затем очистите проект библиотеки, после чего повторите шаг 4
  6. перейдите в проект, в котором вы хотите, чтобы библиотека была, затем щелкните правой кнопкой мыши проект -> Свойства -> Android -> Библиотека, добавьте, затем выберите проект библиотеки (он должен быть там) и нажмите Применить, затем ОК
  7. если все еще не появляется, очистите проект еще раз, и это должно сработать


0

Когда вы посмотрите на путь ссылки до и после, он исходит, например, из «C: / workspace / mylib» и переходит в «../../mylib» при копировании в правильное место, что довольно интересно.


0

FYI,

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


Также работал у меня. Просто удалил и
повторно импортировал

0

Спасибо за вопрос. У меня была точно такая же проблема при интеграции Facebook с моим Android-приложением. Я решил проблему, переместив свой проект разработки на тот же диск Windows, на котором находился проект библиотеки. Почему-то Eclipse не может правильно прочитать местоположение проекта библиотеки из файла default.properties, если он находится на другом диске.


0

Как и в посте Суфи Хана, я тоже решил эту проблему с помощью перезагрузки. Мой случай отличался тем, что, когда я впервые зашел в Свойства-> Android и добавил библиотеку, я получил прекрасную зеленую галочку. Когда я закрыл диалоговое окно, Eclipse все еще показывал ошибки типа «класс не найден». Когда я снова проверил свойства, я увидел красный X. Но решение г-на Кана (удалить плохую библиотеку, перезапустить Eclipse, снова добавить библиотеку) работало нормально.

Я использую версию ADT 0702 (начинается с «кластер», рифмуется с «утка»).


0

Я последовал принятому ответу, но также должен был убедиться, что мой файл "project.properties" доступен для чтения.

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

Если закрытие окна настроек и повторное открытие удаляет только что добавленную библиотеку, это может быть вашим решением.


0

Если ваш проект библиотеки все еще не отображается, попробуйте добавить флаг библиотеки в свойствах проекта библиотеки.

Добавить android.library = true

project.properties

# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system edit
# "ant.properties", and override values to adapt the script to your
# project structure.
#
# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

# Project target.
target=android-17
android.library=true
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.