Android Lint из командной строки и из Android Studio не совпадают - PullRequest
8 голосов
/ 14 января 2020

У меня есть модуль, который Я знаю, включает в себя некоторые неиспользуемые цветовые ресурсы. Когда я запускаю lint из Android Studio, он включает ожидаемый вывод. Однако, когда я запускаю его из командной строки, он не находит эти неиспользуемые ресурсы.

Как получить из командной строки сообщение об этих неиспользуемых ресурсах (желательно в качестве предупреждения)?


Работает пух от Android Studio

Выполнить проверку по имени:

enter image description here

Вывод:

enter image description here

Запуск lint из командной строки (с использованием gradle)

Моя конфигурация build.gradle:

lintOptions {
    check 'UnusedResources'
}

Фактически выполняется задача :

$ ./gradlew :lib:lint

> Task :lib:lint
Ran lint on variant release: 0 issues found
Ran lint on variant debug: 0 issues found

BUILD SUCCESSFUL in 2s

Я знаю, что конфигурация gradle "работает", потому что, если я удаляю строку check 'UnusedResources', она обнаружит другие проблемы (check заставляет ее выполнить только одну проверку). Также примечательно, что указание check 'ThisIsObviouslyNonsense' дает тот же вывод («успешный» запуск, который находит ноль проблем).


Воспроизведение проблемы

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

  1. Используйте мастер студии Android для создания нового проекта. (Я выбрал «Пустое действие», Kotlin и минимальный API 19.)
  2. Добавьте это к своим цветам. xml: <color name="unused">#f00</color>
  3. Откройте app/build.gradle и выполните следующие действия:
    1. Измените apply plugin: 'com.android.application' на apply plugin: 'com.android.library'
    2. Удалите строку applicationId из defaultConfig
    3. Добавьте этот блок lintOptions к android block:
lintOptions {
    check 'UnusedResources'
}

Теперь go в командной строке и запустить ./gradlew lint. Вы увидите 0 проблем.

Примечательно, что все кажется работающим перед преобразованием модуля в библиотеку (запуск lint обнаруживает неиспользуемый ресурс цвета просто замечательно). Это может иметь отношение к тому факту, что библиотечные ресурсы считаются "publi c" ... но в моей реальной библиотеке мы явно объявили, что ресурсы являются частными по умолчанию.

...