У затемненні не вдається посилатися на проект бібліотеки для 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/… Я сподіваюся, що це комусь допоможе
Abeer Sul

Відповіді:


160

Добре Ось рішення, яке я знайшов, коли шукав файл default.properies проекту референції (а не бібліотеку) у своїй файловій системі. Хоча проект посилань знаходився в тій же робочій області затемнення, що і бібліотечний проект, фактичні файли були десь у файловій системі, тобто вони не знаходилися в одній батьківській папці бібліотечного проекту. Як тільки я помістив проект посилань у ту саму фізичну папку, що і проект бібліотеки, все пішло нормально.

Я здогадуюсь, що це повинно бути пов’язане з андроїдом, використовуючи мурашок під кришками.

Редагувати: ім'я проекту повинно відповідати імені папки у файловій системі. Те, що ви бачите у Властивості проекту-> Android-> Довідник бібліотеки, - відносний шлях до файлової системи.


3
Також хочу додати, що символічні посилання для цього не в порядку. У мене всі проекти зберігалися в одній і тій же папці в іншому місці (куди я помістив резервні копії матеріалів), а потім купу символьних посилань у папці робочої області на ці папки. Таким чином, вони були в одній і тій же папці в обох місцях, проте використання символічних посилань все це зіпсувало. Як тільки я завантажив справжню папку як основну робочу область, все було добре.
Зулаксія

7
+1 Для того, щоб сформулювати цю ГОРОВНУ поведінку комбінації Eclipse / ADT. Просто FYI, навіть розміщення обох проектів у одній фізичній папці не допомагає, якщо ця папка є на спільній доступності Samba . Ugrrr ...
an00b

20
Іноді Eclipse видалить посилання, перезапустить затемнення і додасть ще раз, тепер це має працювати.
Warpzit

Це було проблемою для моїх проектів, що належать і розташовані в одній робочій області. Імпортував проект у тій же робочій області, що і бібліотека, і все працювало чудово. Дякую за відповідь.
Джейсіл Дейв

Перевірте, чи робоча область та бібліотека знаходяться в одному місці папки. Зробив помилку при повторному завантаженні ADT і створив проект під робочим простором C: \ users на відміну від мого фактичного робочого простору. Потрібно сказати, що ще раз перевірте, чи ваш проект, і ваша бібліотека знаходяться в одному робочому каталозі!
Гарбіт

11

Переконайтесь, що обидва проекти присутні в одному робочому просторі. Для цього під час імпорту проектів переконайтесь, що прапорець "Скопіювати проект у робочий простір".


1
Як я можу використовувати той самий проект бібліотеки для іншого проекту. Якщо я це роблю, це показує символ червоного кольору хрестом .. @Karthik
Shylendra Madda

10

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


4
Якщо основні та бібліотечні проекти знаходяться на різних накопичувачах , схоже, що Eclipse не може вирішити Референтний шлях від абсолютного до відносного, і Eclipse не задоволений цим (зелений галочка перетворюється на червоний хрест).
Панг

працював і для мене. Я замінив згаданий проект на тому самому диску (H :), і тепер це нормально
Tobia Zambon

4

Найпростіший спосіб виправити шлях до бібліотечних шляхів - використовувати графічний інтерфейс від Eclipse, щоб додати бібліотеку, як показано на наступному скріншоті, і дозволити Eclipse подбати про те, щоб ввести правильні відносні шляхи в project.properties. Загальне налаштування для розміщення проектів бібліотеки в каталогах значно відрізняється від ваших основних проектів, які використовують бібліотеку. Цей метод спрацює, якщо "проект" бібліотеки "та проект, що використовує його, знаходяться в одному" робочому просторі "затемнення (вони" не повинні "знаходитися в одній батьківській папці): введіть тут опис зображення


4
Проблема полягає в тому, що бібліотека та проект знаходяться на різних дисках / розділах ... див. Списки помилок вище. З вами добре, оскільки шлях до вашої бібліотеки показує відносні шляхи замість повних контурів DOS ...
kenyee

3

Будь ласка, переконайтеся, що проект бібліотеки позначений як "Є бібліотека" - клацніть правою кнопкою миші на проект бібліотеки - властивості - Android - поставте прапорець "Є бібліотека" - у project.properties бібліотечного проекту у вас повинен бути новий запис: "android .library = true. Тепер додайте його до потрібного проекту, як описано в публікації нижче. (публікація із вбудованим зображенням - від Nilesh Pawar).


1
Це працювало для мене просто чудово. Заплутаною частиною є те, що я думаю, що розташування цього поля "Є бібліотека". Це не інтуїтивно зрозуміло, що це насправді вибір цілі поточної програми / бібліотеки, а не перемикач параметрів для включення бібліотек.
EtienneSky

3

На цю помилку тут посилаються кілька разів 27199 , 35786 , 36460 & 38052

Може, голосуванням за них це буде визначено одного дня ...


2

Ще одне спостереження з цього ж питання.

Для мене два проекти, які знаходяться в одній батьківській папці, і обидва були локальними всередині робочої області. Вже тоді питання все ще відбувалося.

Я відредагував файл "project.properties" і поставив абсолютний шлях (з косою рискою "/" для сепаратора) проекту бібліотеки. Зберегли і закрили. Потім перейшли до діалогового вікна властивостей проекту, видалили бібліотеку (яка все ще показувала піктограму хреста, але з абсцис-контуром) та додали її назад, як завжди. На диво питання вирішено, і проект складається і запускається.

Це дійсно дивно і має бути помилка з ADT. Я використовую ADT версії 20.0.2


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

2

коли розробник посилається на facebook або будь-який інший проект бібліотеки, то перш за все очистіть проект від затемнення-> проект-> чистий проект. які хочуть дозволити помилку червоного хреста в екрані посилання.


2

Для мене я просто запускаю затемнення, і додана бібліотека працює чудово.

Я маю на увазі вперше це відображення червоних позначок після додавання бібліотечного проекту. Хоча основний проект і проект бібліотеки затемнення знаходяться в одній папці робочої області, а файли ресурсів не знаходяться поза папкою проекту.

Отже, ви можете спробувати перезапустити затемнення. Щасливе кодування ....


1

Для мене було вирішення проблеми

  1. Створіть нову робочу область
  2. Імпортувати проект бібліотеки в цю робочу область
  3. Імпорт бажаного проекту в цю робочу область
  4. Маючи як проект, так і бібліотечний проект, однакову цільову версію ОС Android
  5. Проект довідкової бібліотеки в моєму проекті

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


Створення нового робочого простору також вирішило проблему. Також потрібно очистити проекти.
Омер Канзізоглу

1

У мене була така ж проблема, коли я намагаюся змінити свою робочу область, щоб це моє рішення:

  1. імпортувати та копіювати всі робочі дані, включаючи проект бібліотеки, у робочу область
  2. видаліть стару посилання проекту, клацніть правою кнопкою миші на проекті -> Властивості -> Android -> Бібліотека, і виберіть пошкоджену бібліотеку (щоб я її називав) та виберіть Видалити
  3. спочатку очистити проект (оновити властивості ур-проекту)
  4. перейдіть до бібліотечного проекту Властивості -> Android -> Бібліотека та перевірте, чи є бібліотека, якщо вона не натискає Застосувати, а потім ОК
  5. якщо проект бібліотеки є бібліотекою вже перевірений, спочатку Скасуйте його, а потім очистіть проект бібліотеки, після цього виконайте Крок 4 ще раз
  6. перейдіть до проекту, у якому хочете перейти до бібліотеки, а потім клацніть правою кнопкою миші на проекті -> Властивості -> Android -> Бібліотека.
  7. якщо все ще не з’явиться проект, очистіть проект ще раз, і це має зробити


0

Коли ви подивитесь на довідковий шлях до і після, він походить від, наприклад, "C: / робоча область / mylib" і переходить до "../../mylib", коли скопійовано в потрібне місце, досить цікаво.


0

FYI,

Для мене працювало - видалити проекти "бібліотеки" (фактичні проекти) з робочої області (не видаляючи файли), а потім повторно імпортувати їх за допомогою майстра (імпортувати існуючий проект Android з вихідного коду).


Також працював на мене. Щойно видалили та повторно імпортували проекти (як "існуючий проект затемнення")
Нероманс

0

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


0

Подібно до посту Суфі-хана, я також вирішив це питання перезавантаженням. Мій випадок відрізнявся тим, що коли я вперше звернувся до Властивості-> Android і додав бібліотеку, у мене з’явилася прекрасна зелена галочка. Коли я закрив діалогове вікно, Eclipse все ще показував помилки типу не знайденого класу. Коли я ще раз перевірив властивості, я побачив червоний X. Але рішення містера Кан (видаліть неправильну корект, перезапустіть Eclipse, додайте ліб знову) спрацювало чудово.

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


0

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

Якщо файл буде прочитаний тільки (перевірено в контролі джерела), затемнення не буде його редагувати. Додавання посилання на бібліотеку вдасться, але зміна не збережеться після натискання кнопки ОК.

Якщо закриття вікна налаштувань і повторне відкриття знову видалить бібліотеку, яку ви тільки що додали, це може бути вашим рішенням.


0

Якщо ваш проект бібліотеки все ще не відображається, спробуйте додати прапор бібліотеки у властивості вашого бібліотечного проекту

Додайте android.library = true

проект.властивості

# 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.