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

Открытие исходного кода из редактирования отладки .class после обновления Android R18

Когда я отлаживаю свой код в Eclipse, меня раздражает, когда я открываю редактор, чтобы узнать, что я не могу его редактировать, потому что я действительно просматриваю источник файла .class. Как заставить Eclipse открывать файл .java вместо файла .class в режиме отладки?

EDIT: Когда я попал в точку останова в своем коде, он возвращает меня в MyFile.class вместо MyFile.java, поэтому я могу видеть свой код, но не редактировать его.

EDIT: Я предполагаю, что это имеет какое-то отношение к Android и ADT R18

4b9b3361

Ответ 1

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

В последнее время Google изменил способ, которым ваши Android-проекты объединяют ваши внешние библиотеки Android. В ADT R17 (я думаю) он начал упаковку источника внешних проектов в файлы .jar и включил их непосредственно в ваш проект в папке Android Dependencies или /libs.

Теперь, когда отладчик попадает в точку останова, он выводит ваш исходный код в .jar, в основном говоря вам редактировать файл .class. Проблема в том, что этот файл доступен только для чтения, поэтому вам нужно найти свой источник .java вручную. (Боль)

Исправление состоит в том, чтобы щелкнуть правой кнопкой мыши по названию проекта в окне отладки и выбрать "Изменить поиск источника..." в меню. Оттуда удалите путь поиска по умолчанию. После этого вручную добавьте связанные проекты (не баночки), которые ссылаются на ваш проект. Это делается нажатием кнопки "Добавить", выбрав "Java Project", а затем проверьте соответствующие проекты.

Ответ 2

  • Откройте вкладку main project properties -> Java Build Path -> Projects и добавьте туда проекты, от которых зависит проект.
  • Перейдите на вкладку Order and Export и снимите флажок Android Dependencies
  • Enjoy

Ответ 3

Хорошо, поэтому я ненавижу быть "этим парнем", учитывая количество людей, для которых это сработало, но для меня это вообще не сработало. Я имею в виду, что пункт меню "Изменить источник..." не был в контекстном меню. Я не пропустил инструкцию для этого в Debug Perspective (предположительно в Project Explorer в Debug Perspective). Я попробовал это, пока приложение было запущено, и пока приложение было приостановлено. Я попробовал проверить меню для проекта приложения (по-видимому, на что ссылаются инструкции) и для проекта библиотеки. Нет кубиков. Это связано с последней сборкой Eclipse.

Однако я смог решить проблему:

  • Установите точку останова в приложении или в библиотеке, к которой вы хотите подключить источник. Фактически вы можете разместить это в любом месте, пока библиотека, которую вы пытаетесь связать с источником, имеет функцию, которая будет отображаться в стеке вызовов при ударе точки останова.
  • Начните отладку своего приложения.
  • Перейдите в приложение, чтобы попасть в точку останова.
  • Убедитесь, что вы находитесь в режиме отладки.
  • На вкладке "Отладка" (где отображается стек вызовов) найдите любую функцию из вашей библиотеки.
  • Щелкните эту функцию правой кнопкой мыши. Параметр "Изменить источник поиска..." должен быть рядом (ближе к нижней части).
  • Здесь инструкции такие же, как у Styler's. Нажмите "Добавить", выберите "Проект Java" и добавьте проект (или несколько проектов).
  • Перед тем, как выйти из окна "Редактировать поиск источника...", если вы похожи на меня, вы увидите, что Eclipse решил добавить кучу вещей в список, который вы не выбрали. Некоторые из этих материалов (возможно, под расширяемыми элементами с именами, такими как "Частные библиотеки Android" ) могут быть банками для библиотек, которые вы только что добавили. Удалите эти банки из списка.
  • Profit!

Ответ 4

По какой-то причине Eclipse не считает, что файл класса поступает из вашего файла Java. Это часто некорректированный путь сборки или используемый jar файл вместо проекта, генерирующего файл jar.

Посмотрите на панель управления проектами (кнопка <->), чтобы увидеть, где Eclipse находит файл класса, и затем выяснить, почему он использует это местоположение вместо вашего проекта с исходным файлом.