Подтвердить что ты не робот

"Open Declaration" в Eclipse переходит к файлам классов вместо исходных файлов для Android-библиотек

У меня есть два Android-проекта "A" и "B" . "B" зависит от "A" и является библиотекой. Всякий раз, когда я нахожусь в Project 'B' и нажимаю "Open Declaration" для исходного файла Java, который находится в "A", Eclipse переходит к файлу класса вместо исходного файла. Это, конечно, имеет несколько недостатков!

Я посмотрел путь сборки проекта "B" , чтобы увидеть, имеет ли ссылка на библиотеку "A" правильный путь к исходному проекту.

Кто-нибудь знает, как это исправить?

Вот файлы .classpath и project.properties для каждого проекта:

ProjectA.classpath

<?xml version="1.0" encoding="UTF-8"?>
  <classpath>
  <classpathentry kind="src" path="src"/>
  <classpathentry kind="src" path="gen"/>
  <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
  <classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
  <classpathentry kind="output" path="bin/classes"/>
</classpath>

ProjectA 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 use,
# "ant.properties", and override values to adapt the script to your
# project structure.

# Project target.
target=android-8
android.library=true

ProjectB.classpath

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
  <classpathentry kind="src" path="src"/>
  <classpathentry kind="src" path="gen"/>
  <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
  <classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
  <classpathentry kind="output" path="bin/classes"/>
</classpath>

ProjectB 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 use,
# "ant.properties", and override values to adapt the script to your
# project structure.

# Project target.
target=android-8
android.library.reference.1=../ProjectA
4b9b3361

Ответ 1

Вы можете импортировать проект библиотеки не только как Android Lib (так оно и должно быть сделано), но и как связанный проект в обычном меню "Java Build Path". Затем не забудьте перенести этот импорт в верхнюю часть (по крайней мере, больше, чем запись "Библиотечные проекты" ) на вкладке "Заказ и экспорт".

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

Тем не менее, мне удобнее соединять файл класса.

Я не знаю, что это происходит. Мои приятели в офисе работают с той же конфигурацией, что и я, и у них нет этой проблемы, но, похоже, мы не единственные, у кого есть эта проблема: http://code.google.com/p/android/issues/detail?id=20731

Ответ 2

У меня была такая же проблема, когда моя версия проекта библиотеки A находилась в "Свойствах > Путь сборки Java > Библиотеки", но не в "Свойствах > Путь сборки Java > Проекты".

Проблема была решена после того, как я сделал следующее:

  • Удалите "Библиотечные проекты" из "Свойствa > Путь сборки Java > Библиотеки", который был добавлен в "Свойствa > Путь сборки Java > " (я не уверен, нужен ли этот шаг, но это то, что я сделал).
  • Добавьте проект A в "Свойствa > Путь сборки Java > Проекты".
  • Перезапустить Eclipse (Индиго). Как-то Eclipse воссоздает проекты библиотеки в "Свойствах > Путь сборки Java > Библиотеки"

.classpath должен иметь следующее:

<classpathentry combineaccessrules="false" kind="src" path="/A"/>

На самом деле переход к файлам классов был не самым раздражающим, но нарушение файлов классов вместо java файлов во время отладки сводило меня с ума до того, как эта проблема была решена.

Ответ 3

Что сработало для меня: перемещение проектов lib на вкладке Заказ и Экспорт - прямо под /src и /gen основного проекта.

Ответ 4

Мое первое предположение заключалось в том, что у вас есть JAR с классами A в нем на пути сборки B. Откройте вкладку "Библиотеки". Можете ли вы показать нам свои файлы .classpath и project.properties?

Ответ 5

Для меня работает следующее решение:

Перейдите в проект библиотеки Android (в вашем случае это A) → Java Build Path → Order and Export, убедитесь, что первая запись является исходной папкой библиотеки (A). Затем очистите проект библиотеки и целевой проект. Теперь он работает отлично.