Как проверить, есть ли у зависимости gradle новая версия

232

В Android Studio, когда я использую +номер версии (например com.android.support:recyclerview-v7:21.+), я получаю предупреждение «Избегайте использования + в номерах версий». Когда я использую определенный номер версии, я не всегда могу использовать последнюю версию. У меня много зависимостей в моем проекте. Как проверить, есть ли у зависимости более новая версия? Есть ли плагин для Android Studio - или что-то в этом роде - чтобы уведомить меня о появлении более новой версии зависимости?

Изменить: Android-студия выделяет устаревшие библиотеки поддержки Android и сервисы Google Play. Но это не доступно для других пользовательских библиотек.

введите описание изображения здесь

OSRL
источник
Для разработчиков, которые обновляют библиотеку, смотрите: Как обновить библиотеку для новой версии в Bintray?
Сурагч,
2
По крайней мере, в Android 3.0 обновления для пользовательских библиотек теперь показывают то же уведомление, что и у вас в образе вопроса для библиотеки поддержки.
Сурагч
@Suragch это не работает для некоторых зависимостей для меня в Android Studio 3.0.1
Реми
Мы можем использовать gradleplease.appspot.com для проверки новой версии библиотеки
Алекс Кисель

Ответы:

187

Теперь это встроено в Android Studio как проверка Lint. Вы можете включить его здесь:

Настройки> Редактор> Инспекции> «Доступны более новые версии библиотеки»

Описание для этой проверки:

Доступны более новые версии библиотеки

Этот детектор проверяет в центральном хранилище, чтобы увидеть, есть ли более новые версии для зависимостей, используемых этим проектом. Это похоже на проверку GradleDependency, которая проверяет наличие новых версий, доступных в инструментах и ​​библиотеках Android SDK, но работает с любой зависимостью MavenCentral и каждый раз подключается к библиотеке, что делает ее более гибкой, но при этом значительно медленнее.

Из-за замедления это может привести к тому, что я бы рекомендовал периодически запускать его вручную, а не всегда включать. Вы можете сделать это:

Анализ> «Выполнить проверку по имени»

Затем выполните поиск «Доступны более новые версии библиотеки» и запустите его на своем модуле.

Изменить : выше должно работать только с Android Studio 2.3. Если вы используете старую версию (вам следует обновить), может помочь следующее:

Обратите внимание, что, по-видимому, вам нужно включить проверку, чтобы запустить ее вручную - поэтому (начиная с Android Studio 2.0 Beta 2) вам нужно найти проверку в настройках, включить ее, затем запустить ее по имени, а затем снова отключить ( вернуть предыдущее выступление).

Адам С
источник
4
Я не знаю, делаю ли я что-то не так, но у меня это не сработало
osrl
1
Да, то же самое для меня, царство не на MavenCentral. Ваша модифицированная версия определена следующим образом? Мой есть, и он тоже не смог его найти def okhttpVersion = '2.7.2' compile "com.squareup.okhttp:okhttp:$okhttpVersion"
osrl
1
с определенной версией строки не удалось найти. Удалось найти com.squareup.okhttp:okhttp:2.7.2. Также на2.0.0-beta4
osrl
2
Это показывает доступные обновления на вкладке «Проверка», но не выделяет их как предупреждение в build.gradle. Мне еще предстоит найти решение, которое делает это.
Тиаго
3
Пришлось вернуться к этому ответу, чтобы сообщить, что он работает ТОЛЬКО для зависимостей MavenCentral. Это означает, что репозитории из Jitpack или других источников НЕ обновляются автоматически. Правильный метод для получения последней версии ВСЕХ зависимостей в этом ответе [ stackoverflow.com/questions/28538824/… (здесь)
Рэй Ли
274

ОБНОВЛЕНИЕ (23.05.18):

Более новая версия Android Studio не отображает обновления версий в диалоговом окне «Структура проекта». Вместо этого ответ Адама является правильным для Android Studio 3+

Анализ> «Выполнить проверку по имени»

Тогда ищите " Newer Library Versions Available"

ПРЕДЫДУЩИЙ ПУТЬ:

Начиная Android Studio 2.2с нового Project Structureдиалогового окна отображается список зависимостей, которые ваше приложение использует с доступными обновлениями из локальных И удаленных репозиториев, а также.

  • Активируйте его, перейдя Android Studio > Settings > Build, Execution, Deployment > Gradle > Experimentalи проверьте Use new Project Structure dialog(Спасибо @jessehensold)
  • Затем откройте его, перейдя в File > Project Structure > Messages

введите описание изображения здесь

Для более старой версии Android Studio см. Другие ответы ниже.

Quanturium
источник
1
О редактировании; речь шла об андроид-студии, потому что я искал плагин для Android Studio. Спасибо за ответ, но я его уже видел.
Osrl
11
Этого больше нет в Android Studio (используется бета 2).
Гонсало
8
Мне нужно было зайти в «Настройки»> «Построение, выполнение, развертывание»> «Gradle»> «Экспериментальный» и проверить «Использовать новую структуру проекта»
jessehensold
1
Перейдите на вкладку «Зависимости», чтобы активировать кнопку «Применить». Какая-то ошибка?
Матеуш Кафловски
2
Я пробовал это с Android Studio 2.3, но Dependenciesвкладка Project Structureдиалога не находит никаких зависимостей от моего проекта.
jakub.g
58

Помимо встроенной функции Android Studio, есть хороший плагин Gradle, который называется Gradle Versions Plugin, который делает именно то, что вы хотите, с преимуществом простого расширения Gradle, поэтому НЕ связывается с какой-либо конкретной IDE, поэтому полезно для любого проекта, использующего Gradle.

Плагин Gradle Versions может создавать отчеты в удобном для чтения виде в виде текста, а также выводить их в виде JSON или XML для автоматической обработки.

После добавления в файл Gradle стандартное использование будет выглядеть примерно так:

> ./gradlew dependencyUpdates

Это создаст отчет о зависимости проекта, который выглядит следующим образом:

------------------------------------------------------------
: Project Dependency Updates (report to plain text file)
------------------------------------------------------------

The following dependencies are using the latest milestone version:
 - com.github.maksim88:PasswordEditText:v0.9
 - com.android.databinding:adapters:1.3.1
 - com.joanzapata.iconify:android-iconify-entypo:2.2.2
 - com.joanzapata.iconify:android-iconify-fontawesome:2.2.2
 - com.webnetmobile.tools:webnet-log:1.0.3
 - com.nulab-inc:zxcvbn:1.2.2

The following dependencies exceed the version found at the milestone revision level:
 - com.hannesdorfmann.fragmentargs:annotation [4.0.0-SNAPSHOT <- 3.0.2]
 - com.hannesdorfmann.fragmentargs:bundler-parceler [4.0.0-SNAPSHOT <- 3.0.2]
 - com.github.bumptech.glide:glide [3.7.0 <- 3.6.1]
 - com.hannesdorfmann.fragmentargs:processor [4.0.0-SNAPSHOT <- 3.0.2]

The following dependencies have later milestone versions:
 - com.github.PhilJay:MPAndroidChart [v2.2.5 -> v3.0.1]
 - com.android.support:appcompat-v7 [25.1.0 -> 25.1.1]
 - com.jakewharton:butterknife [8.4.0 -> 8.5.1]

Generated report file build/dependencyUpdates\report.txt

Смотрите документы для подробных примеров использования.


НОТА: на момент написания этого ответа (2017-01) версии выше 0.17.0 производят больше выходных данных в текстовом формате плана, в т.ч. URL проекта, таким образом делая весь вывод раздутым. Если вы, как я считаю, бесполезным, либо придерживайтесь версии 0.17.0, либо используйте версию, в которой эта проблема решена в любом случае (если такая версия существует;)

Марчин Орловский
источник
3
Потрясающие! Я искал это для нормального проекта Java. Хорошее общее решение без специфичности Lint для Android.
TWiStErRob
Я получил ошибку, Configuration 'compile' in project ':myapp' is deprecated. Use 'implementation' instead. The CompileOptions.bootClasspath property has been deprecated and is scheduled to be removed in Gradle 5.0. Please use the CompileOptions.bootstrapClasspath property instead.когда запустил это.
Фрукт
заполните отчет об ошибке здесь: github.com/ben-manes/gradle-versions-plugin/issues
Марцин Орловски
2
Метод «Доступны более новые версии библиотеки» не работал, но это прекрасно! (Я использую несколько файлов Gradle с переменными для версий lib)
norbDEV
Можете ли вы добавить изображение этого плагина? Я не нашел его в списке.
CoolMind
14

УСТАРЕЛО - ВИДИТЕ ПРИНЯТЫЙ ОТВЕТ ЗА СОВРЕМЕННЫЙ ПУТЬ

Инструмент, представленный ниже, не работает в новых версиях Android Studio / Gradle, и его автор больше не поддерживает его (по состоянию на 30.10.2016 ). Поэтому решение, представленное в принятом ответе, следует использовать, если не работает со старой версией Android Studio.


По состоянию на январь 2016 года появился плагин для Android Studio, который выполняет нечто похожее, называется Dependencies Version Checker , источники которого можно найти на GitHub .

Его можно добавить через встроенный интерфейс (Настройки> Плагины> Просмотр репозиториев ...):

Как это выглядит внутри родного интерфейса

После установки и перезапуска в пользовательском интерфейсе появится следующая вкладка:

Новая вкладка пользовательского интерфейса, которая появляется после перезагрузки.

Соответствующий build.gradleтекст должен быть вставлен в левую часть панели VersionChecker, и Version Checkкнопка нажата. В результате справа появится таблица, в которую включены последние версии библиотек, использованных в вставленном скрипте (как показано на рисунке выше).

Dev-Ир
источник
Даже если это то, что я искал в первую очередь, это не работает, как ожидалось. Я открыл вопрос в репозитории Github об этом. github.com/takuaraki/DependenciesVersionChecker/issues/5
osrl
Я попробовал это и получил общее сообщение об ошибке / ошибке, когда я нажал «проверить версии»
Грег Эннис
@GregEnnis Проблема с последней версией плагина. Либо используйте более старую версию, либо ждите обновления ...
Dev-iL
11

См. Файл> Структура проекта, затем нажмите «Предложения». Я знаю, что это решение было предложено Хемантом Шармой и Джеремиасом Герсичичем, но Android Studio изменила его в версии 3.4.1.

введите описание изображения здесь

CoolMind
источник
кто-нибудь еще получал этот экран просто на андроид студии 3.5?
Никола Бегин
@NicolaBeghin, я только что проверил пустой проект и получил 4 предложения. Да, в июле был термин, когда он не показывал предложения, но они исправили эту ошибку. Я полагаю, это проблема с сервером Google, иногда это может случиться.
CoolMind
Не поддерживаетGradle KTS
Влад
2

Для зависимостей библиотеки поддержки (com.android.support) есть лучший вариант - andle

Он также может запросить jcenter и maven center.

Простые три шага, чтобы обновить весь проект сразу.

1. установить:

    $ sudo pip install andle

2. установить SDK:

    $ andle setsdk -p <sdk_path>

3. обновить зависимость:

    $ andle update -p <project_path> [--dryrun] [--remote] [--gradle]

--dryrun: только результат печати в консоли

--remote: проверить версию в jcenter и mavenCentral

--gradle: проверить версию Gradle

Смотрите https://github.com/Jintin/andle для получения дополнительной информации

Jintin
источник
только для поддержки библиотек?
Osrl
@osrl, если вы добавите --remote или -r, он проанализирует версию в jcenter.
Jintin
0

Я имел дело с этой же проблемой и попробовал ответ https://stackoverflow.com/a/35371234/6412430

То, что действительно работало для меня на Android Studio 3.4.1, было:

File -> Project Structure -> Dependencies

Как только вы достигнете этой точки, будут перечислены все зависимости, которые включены в ваш проект или модуль. Те, которые устарели, будут подчеркнуты, и когда вы выберете один, будут показаны его детали, дающие вам возможность обновить переменную (если она отделена от декларации) или зависимость.

В последнее время, но это было то, что работало для меня.

Иеремия Герсичич
источник
Я тоже нашел этот путь. Странно, что кто-то пометил минус.
CoolMind
-1

Чтобы получить обновление или рекомендовать для вашего проекта зависимость должна быть такой же, как проект Android

FILE -> Project Structure -> MODULES(app) -> Dependencies

Когда вы дойдете до вкладки зависимостей, нажмите на +кнопку, которая находится в верхнем правом углу окна. Когда вы нажмете « +Выбрать» Library Dependency, откроется Новое окно для Choose Library Dependencyпоиска вашей зависимости в окне поиска, все перечисленные зависимости Android будут обновлены.

Хемант Шарма
источник
Спасибо, но этот список также содержит библиотеки, которые я не использую, и иногда не содержит того, что я использую. Кроме того, Гсон, com.google.code.gson:gson:2.2.4хотя на самом деле это такcom.google.code.gson:gson:2.8.5
CoolMind
Иногда зависимости работают с совместимой версией Gradle. Пожалуйста, проверьте, используете ли вы обновленный Gradle в своем Gradle уровня Project
Hemant Sharma