Як перевірити, чи має залежність від Gradle нову версію


232

У Android Studio, коли я використовую +номер версії (як com.android.support:recyclerview-v7:21.+), я отримую попередження "Уникати використання + у номерах версій". Коли я використовую певний номер версії, я не завжди можу використовувати останню версію. У мене дуже багато залежностей у моєму проекті. Як перевірити, чи має залежність більш нову версію? Чи є плагін Android Studio - або щось подібне - щоб сповістити мене, коли є новіша версія залежності?

Редагувати: студія Android виділяє застарілі бібліотеки підтримки для Android та сервіси Google Play. Але це недоступно для інших користувацьких бібліотек.

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


Про розробників, які оновлюють бібліотеку, див .: Як оновити бібліотеку на нову версію в Bintray?
Сурагч

2
Щонайменше для Android 3.0, оновлення для користувацьких бібліотек тепер показують те саме повідомлення, що і у вашому зображенні запитання щодо бібліотеки підтримки.
Сурагч

@Suragch це не працює для деяких залежностей для мене в студії android 3.0.1
Rémy

Ми можемо використовувати gradleplease.appspot.com для перевірки нової версії бібліотеки
Alex Kisel

Відповіді:


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. Також on2.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 див. Інші відповіді нижче.


1
Про редагування; мова йшла про android-studio, тому що я шукав плагін 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/isissue
Marcin Orlowski

2
Метод "Доступні новіші версії бібліотек" не працював, але це ідеально! (Я використовую декілька файлів gradle зі змінними для версій lib)
norbDEV

Чи можете ви додати зображення цього плагіна? Я не знайшов його у списку.
CoolMind

14

ДЕПРЕКЛАДЕНО - ВИДІТЬСЯ ПРИЙМАНО ВІДПОВІДЬ ЗА СУЧАСНИЙ ШЛЯХ

Наведений нижче інструмент не працює на нових версіях Android Studio / Gradle, і його автор більше не підтримує його ( станом на 30.10.2016 ). Тому рішення, представлене у прийнятій відповіді, слід використовувати, якщо не працювати зі старою версією Android Studio.


Станом на січень 2016 року є плагін для Android Studio, який робить щось подібне, називається Dependency Version Checker , і джерела якого можна знайти на GitHub .

Його можна додати через вбудований інтерфейс (Налаштування> Плагіни> Огляд сховищ ...):

Як це виглядає всередині рідного інтерфейсу

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

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

Потім відповідне build.gradleслід вставити в ліву частину панелі VersionChecker і Version Checkнатиснути кнопку. Результатом є таблиця, що з’являється праворуч, яка містить останні версії бібліотек, використовуваних у вставленому скрипті (як показано на зображенні вище).


Навіть якщо це саме те, що я шукав в першу чергу, це не працює так, як очікувалося. Я відкрив питання про репортаж про Github. github.com/takuaraki/DependencesVersionChecker/isissue/5
osrl

Я спробував це і отримав загальне повідомлення про помилку / помилку, коли натиснув "перевірити версії"
Грег Енніс

@GregEnnis Проблема з останньою версією плагіна. Або скористайтеся старішою або чекайте оновлення ...
Dev-iL

11

Див. Файл> Структура проекту та натисніть «Пропозиції». Я знаю, це рішення запропонували Hemant Sharma та Jeremías Gersicich, але Android Studio змінив його у версії 3.4.1.

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


хто ще отримує цей екран просто порожній на Android Studio 3.5?
Нікола Бегін

@NicolaBeghin, я щойно перевірив порожній проект і отримав 4 пропозиції. Так, був термін, коли він не показував пропозицій, у липні, але вони виправили цю помилку. Я гадаю, це проблема сервера Google, вона може траплятися іноді.
CoolMind

Не підтримуєGradle KTS
Влад

2

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

Він також може запитувати jcenter та центр Maven.

Простий три кроки, щоб оновлювати весь проект відразу.

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 для отримання додаткової інформації


лише для бібліотек підтримки?
osrl

@osrl, якщо ви додасте --remote або -r, він буде розбирати версію на jcenter.
Jintin

0

Я мав справу з цією самою проблемою і спробував відповідь https://stackoverflow.com/a/35371234/6412430

Що дійсно працювало для мене на Android Studio 3.4.1:

File -> Project Structure -> Dependencies

Після досягнення цієї точки будуть перераховані всі залежності, які включені у ваш проект чи модуль. Ті, хто застарів, будуть підкреслені, і коли ви виберете його, будуть показані його деталі, що дадуть вам параметри для оновлення змінної (якщо вона відокремлена від декларації) або залежності.

Добре пізно, але це було для мене.


Я теж знайшов такий спосіб. Дивно, що хтось позначив мінус.
CoolMind

-1

Щоб оновлюватись або рекомендувати свою залежність від проекту, слід відповідати андроїд проекту

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

Коли ви перейдете на вкладку залежності, натисніть +кнопку, яка розміщена у верхньому правому куті вікна. Після натискання кнопки +Вибрати Library Dependencyце відкриє Нове вікно для Choose Library Dependencyпошуку вашої залежності у вікні пошуку, усі перелічені залежності Android оновляться.


Дякую, але цей список також містить бібліотеки, які я не використовую, а іноді не містить того, що я використовую. Також Gson є, com.google.code.gson:gson:2.2.4хоча насправді єcom.google.code.gson:gson:2.8.5
CoolMind

Іноді залежності працюють із сумісною версією grade, будь ласка, перевірте, чи використовуєте ви оновлені gradle у вашому рівні gradle на рівні проекту
Hemant Sharma
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.