Як перевірити, чи має залежність від 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.