Lint для Android в Eclipse дает неверные результаты

Если я запускаю "lint . внутри каталога проекта я получаю ожидаемые предупреждения, но если я запускаю его из eclipse, я получаю бессмысленные ошибки и предупреждения, например:

  • Ресурс R.array.settings_derivatives кажется неиспользуемым [на самом деле он используется]
  • x.y.z не прописан в манифесте [на самом деле прописан]
  • Для вызова требуется уровень API 3 (текущий минимум равен 1): android.view.SurfaceView#isInEditMode [на самом деле для minSdkVersion установлено значение 7]

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


person miniBill    schedule 24.03.2012    source источник
comment
Вызов требует уровня API 3 верно. Дело не в вашем целевом уровне, а в API 3, где был введен этот метод. Вы, вероятно, можете отключить это предупреждение - это имеет смысл только в том случае, если вы хотите перенести свое приложение на более низкий минимальный уровень, который у вас есть в настоящее время.   -  person zapl    schedule 24.03.2012
comment
Это правда, но об этом не следует сообщать, так как я установил для minSdkVersion значение 7. И это сообщается не как предупреждение, а как ошибка... И я хочу сказать, что инструмент командной строки дает другой [правильный ] результат   -  person miniBill    schedule 24.03.2012
comment
Во-первых, убедитесь, что вы используете новейшие инструменты (R17) и соответствующий подключаемый модуль Eclipse. Если проблемы сохраняются, создайте пример проекта, который воспроизводит проблему, а затем отправьте отчет об ошибке на b.android.com. Я не видел, чтобы эти сообщения появлялись раньше.   -  person CommonsWare    schedule 24.03.2012
comment
Последние инструменты и плагин Eclipse. Попробую воспроизвести на меньшем проекте   -  person miniBill    schedule 24.03.2012
comment
Вы правы - я неверно истолковал эту ошибку/цель проверки. Попробуйте Project > Clean.., это может помочь решить проблемы. Кстати: у меня нет предупреждений о isInEditMode. Эти средства проверки предупреждений/ошибок часто путаются, если в вашем проекте есть другая ошибка, такая как недопустимый синтаксис xml в вашем манифесте.   -  person zapl    schedule 24.03.2012
comment
Чистый не решил, и нет нелегального xml. Хотя у меня довольно запутанная настройка: проект Android зависит от библиотеки Android, зависит от проекта j2me, зависит от другого проекта j2me, поэтому меня НАСТОЛЬКО не удивит, если он запутается   -  person miniBill    schedule 24.03.2012
comment
Я попытался воспроизвести в новом проекте и не смог. Сейчас я пытаюсь разобрать фактический проект на barebone, чтобы увидеть, что не так.   -  person miniBill    schedule 24.03.2012
comment
Переключение рабочего пространства и импорт старых проектов привели к изменению предупреждений. Я предполагаю, что это, вероятно, какая-то проблема с устаревшими файлами в моем рабочем пространстве.   -  person miniBill    schedule 24.03.2012
comment
Резюме ссылки Рика: Исправление было сделано и будет включено в инструменты r20.   -  person Chris Knight    schedule 18.04.2012
comment
@miniBill, после исправления ошибки проблема осталась?   -  person Pacerier    schedule 18.11.2014
comment
@Pacerier Я больше не использую Eclipse, извините   -  person miniBill    schedule 18.11.2014


Ответы (4)


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

На сегодняшний день ошибка должна быть исправлена в выпуске 20: http://code.google.com/p/android/issues/detail?id=27527

Редактировать:

При необходимости можно сделать софтлинк в рабочую область.

person keiki    schedule 20.05.2012

Проблема решилась переключением рабочей области на свежую. Вероятно, это была проблема с настройками, оставшимися от предыдущих версий lint.

person miniBill    schedule 24.03.2012

Я решил ту же проблему, используя это: -

Щелкните правой кнопкой мыши папку проекта> Инструменты Android> Очистить маркеры ссылок

«Запустить Android Lint» создает некоторые маркеры, и маркеры вызывают эту ошибку.

person Jainendra    schedule 19.10.2012

Preference --› Android --› Lint Error Checking, поиск выдает NewApi, и можно посмотреть настройки.

Эта проверка сканирует все вызовы Android API в приложении и предупреждает о любых вызовах, которые недоступны во всех версиях, на которые нацелено это приложение (в соответствии с его минимальным атрибутом SDK в манифесте).

Если ваш код преднамеренно обращается к более новым API, и вы обеспечили (например, с условным выполнением), что этот код будет вызываться только на поддерживаемой платформе, вы можете аннотировать свой класс или метод с помощью @ ТаргетАпи

person guanfei    schedule 26.04.2012
comment
Я знаю, что означает это предупреждение. Дело в том, что предупреждения там быть не должно! - person miniBill; 27.04.2012