Cách kiểm tra xem phụ thuộc lớp có phiên bản mới không


232

Trong Android Studio khi tôi sử dụng +số phiên bản (như com.android.support:recyclerview-v7:21.+), tôi nhận được cảnh báo "Tránh sử dụng + trong số phiên bản". Khi tôi sử dụng số phiên bản cụ thể, tôi không thể luôn sử dụng phiên bản mới nhất. Tôi có rất nhiều phụ thuộc trong dự án của tôi. Làm cách nào để kiểm tra xem một phụ thuộc có phiên bản mới hơn không? Có plugin Android Studio - hay một cái gì đó tương tự - để thông báo cho tôi khi có phiên bản phụ thuộc mới hơn?

Chỉnh sửa: Studio Android làm nổi bật các thư viện hỗ trợ Android lỗi thời và các dịch vụ Google play. Nhưng điều này không có sẵn cho các thư viện tùy chỉnh khác.

nhập mô tả hình ảnh ở đây


Đối với các nhà phát triển đang cập nhật thư viện, hãy xem: Làm cách nào để cập nhật thư viện cho phiên bản mới trong Bintray?
Suragch

2
Trong ít nhất Android 3.0, các bản cập nhật cho các thư viện tùy chỉnh hiện hiển thị cùng thông báo như bạn có trong hình ảnh câu hỏi của mình cho thư viện hỗ trợ.
Suragch

@Suragch điều này không hoạt động đối với một số phụ thuộc đối với tôi trong studio android 3.0.1
Rémy

Chúng tôi có thể sử dụng gradleplease.appspot.com để kiểm tra phiên bản thư viện mới
Alex Kisel

Câu trả lời:


187

Điều này hiện được tích hợp sẵn cho Android Studio dưới dạng kiểm tra Lint. Bạn có thể kích hoạt nó ở đây:

Cài đặt> Trình chỉnh sửa> Kiểm tra> "Có sẵn phiên bản thư viện mới hơn"

Mô tả cho kiểm tra này:

Có sẵn phiên bản thư viện mới hơn

Máy dò này kiểm tra với một kho lưu trữ trung tâm để xem liệu có phiên bản mới hơn có sẵn cho các phụ thuộc được sử dụng bởi dự án này không. Điều này tương tự như kiểm tra GradleDependency, kiểm tra các phiên bản mới hơn có sẵn trong các công cụ và thư viện SDK của Android, nhưng nó hoạt động với mọi phụ thuộc MavenCentral và kết nối với thư viện mọi lúc, giúp nó linh hoạt hơn nhưng cũng chậm hơn nhiều .

Do sự chậm chạp, điều này có thể giới thiệu, tôi khuyên bạn nên chạy thủ công theo định kỳ, thay vì luôn bật nó. Bạn có thể làm điều này bằng cách:

Phân tích> "Chạy kiểm tra theo tên"

Sau đó tìm kiếm "Phiên bản thư viện mới hơn có sẵn" và chạy nó trên mô-đun của bạn.

Chỉnh sửa : Ở trên chỉ nên hoạt động như của Android Studio 2.3. Nếu bạn đang dùng phiên bản cũ (bạn nên cập nhật), những điều sau đây có thể giúp:

Lưu ý rằng có vẻ như bạn phải bật kiểm tra để chạy thủ công - vì vậy (kể từ Android Studio 2.0 Beta 2), bạn cần tìm kiểm tra trong cài đặt, bật nó, sau đó chạy theo tên, sau đó vô hiệu hóa lại ( để lấy lại hiệu suất trước đó).


4
Tôi không biết mình có làm gì sai không nhưng điều đó không hiệu quả với tôi
osrl

1
Có tương tự với tôi, vương quốc không có trên MavenCentral. Là phiên bản trang bị thêm của bạn được định nghĩa như thế này? Của tôi là, và nó cũng không thể tìm thấy nó def okhttpVersion = '2.7.2' compile "com.squareup.okhttp:okhttp:$okhttpVersion"
osrl

1
với chuỗi phiên bản được xác định là không thể tìm thấy. Nó đã có thể tìm thấy com.squareup.okhttp:okhttp:2.7.2. Cũng vào2.0.0-beta4
osrl

2
Điều này cho thấy các bản cập nhật có sẵn trong tab "Kiểm tra", nhưng nó không làm nổi bật nó như một cảnh báo trong build.gradle. Tôi vẫn chưa tìm thấy một giải pháp mà làm điều đó.
Tiago

3
Phải quay lại câu trả lời này để báo cáo rằng nó CHỈ hoạt động cho các phụ thuộc MavenCentral. Điều này có nghĩa là kho lưu trữ từ Jitpack hoặc các nguồn khác KHÔNG được cập nhật tự động. Phương pháp đúng để nhận phiên bản mới nhất của TẤT CẢ các phụ thuộc là tại câu trả lời này [ stackoverflow.com/questions/28538824/ ((tại đây)
Ray Li

274

CẬP NHẬT (23/05/18):

Phiên bản mới hơn của Android Studio không hiển thị các bản cập nhật phiên bản trong hộp thoại Cấu trúc dự án. Thay vào đó, câu trả lời của Adam là câu trả lời đúng cho Android Studio 3+

Phân tích> "Chạy kiểm tra theo tên"

Sau đó tìm kiếm " Newer Library Versions Available"

CÁCH TRƯỚC:

Kể từ đó Android Studio 2.2, một Project Structurehộp thoại mới hiển thị danh sách các phụ thuộc mà ứng dụng của bạn đang sử dụng cùng với các bản cập nhật có sẵn từ kho lưu trữ cục bộ VÀ từ xa.

  • Kích hoạt nó bằng cách đi đến Android Studio > Settings > Build, Execution, Deployment > Gradle > Experimentalvà kiểm tra Use new Project Structure dialog(Cảm ơn @jessehensold)
  • Sau đó mở nó bằng cách đi đến File > Project Structure > Messages

nhập mô tả hình ảnh ở đây

Đối với phiên bản cũ hơn của Android Studio, hãy xem các phản hồi khác bên dưới.


1
Về chỉnh sửa; đó là về android-studio, vì tôi đang tìm kiếm một plugin Android Studio. Cảm ơn câu trả lời nhưng tôi đã nhìn thấy nó.
osrl 23/2/2015

11
Điều này không còn xuất hiện trong Android Studio nữa (sử dụng bản beta 2).
Gonzalo

8
Tôi đã phải đi vào Tùy chọn> Xây dựng, Thi hành, Triển khai> Cấp bậc> Thử nghiệm và kiểm tra 'Sử dụng hộp thoại Cấu trúc dự án mới'
jessehensold

1
Phải chuyển đến tab "Phụ thuộc" để bật nút "áp dụng". Một số lỗi?
Mateusz Kaflowski

2
Tôi đã thử điều này với Android Studio 2.3 nhưng Dependenciestab Project Structurehộp thoại không tìm thấy bất kỳ sự phụ thuộc nào trong dự án của tôi.
jakub.g

58

Ngoài tính năng tích hợp sẵn của Android Studio, còn có plugin gradle đẹp có tên là Gradle Phiên bản Plugin thực hiện chính xác những gì bạn muốn, với lợi ích là mở rộng lớp đơn giản nên KHÔNG liên kết với bất kỳ IDE cụ thể nào, do đó hữu ích cho bất kỳ dự án nào sử dụng Gradle.

Plugin phiên bản Gradle có thể tạo các báo cáo ở dạng văn bản thuần có thể đọc được của con người, nhưng cũng có thể kết xuất nó dưới dạng JSON hoặc XML để xử lý tự động.

Sau khi thêm vào tệp gradle của bạn, việc sử dụng tiêu chuẩn sẽ trông giống như:

> ./gradlew dependencyUpdates

Điều này sẽ tạo ra báo cáo phụ thuộc dự án trông như thế này:

------------------------------------------------------------
: 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

Xem tài liệu cho các ví dụ sử dụng rộng rãi.


LƯU Ý: kể từ khi viết câu trả lời này (2017-01), các phiên bản cao hơn 0.17.0 tạo ra nhiều đầu ra hơn ở định dạng văn bản kế hoạch, bao gồm. URL dự án do đó làm cho toàn bộ đầu ra cồng kềnh. Nếu bạn, như tôi thấy rằng vô dụng, hãy sử dụng phiên bản 0.17.0 hoặc sử dụng phiên bản có vấn đề này được giải quyết trong anybway (nếu phiên bản đó tồn tại;)


3
Tuyệt vời! Đến đây tìm kiếm điều này cho một dự án Java bình thường. Một giải pháp chung tuyệt vời mà không có tính đặc hiệu Android của Lint.
TWiStErRob

Tôi đã nhận được lỗi 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.khi chạy này.
Trái cây


2
Phương pháp "Phiên bản thư viện mới hơn có sẵn" không hoạt động, nhưng điều này là hoàn hảo! (Tôi sử dụng nhiều tệp lớp với các biến cho các phiên bản lib)
norbDEV

Bạn có thể thêm một hình ảnh của plugin đó? Tôi đã không tìm thấy nó trong một danh sách.
CoolMind

14

ĐỔI TRẢ - XEM CHẤP NHẬN TRẢ LỜI CHO CÁCH HIỆN ĐẠI

Công cụ tôi trình bày dưới đây không hoạt động trên các phiên bản Android Studio / Gradle mới và tác giả của nó không còn duy trì nó nữa ( kể từ ngày 30/10/2016 ). Do đó, nên sử dụng giải pháp được trình bày trong câu trả lời được chấp nhận trừ khi làm việc với phiên bản Android Studio cũ.


Kể từ tháng 1 năm 2016, có một plugin cho Android Studio thực hiện một công việc tương tự, được gọi là Trình kiểm tra phiên bản phụ thuộc và có thể tìm thấy các nguồn trên GitHub .

Nó có thể được thêm thông qua giao diện tích hợp (Cài đặt> Plugin> Duyệt kho ...):

Nó trông như thế nào bên trong giao diện gốc

Sau khi cài đặt và khởi động lại, tab sau xuất hiện trong UI:

Tab UI mới xuất hiện sau khi khởi động lại.

Liên quan build.gradlenên được dán vào phía bên trái của bảng VersionChecker và Version Checknhấn nút. Kết quả là một bảng xuất hiện ở phía bên phải, bao gồm các phiên bản mới nhất của các thư viện được sử dụng trong tập lệnh đã dán (như thể hiện trong hình trên).


Ngay cả khi đây là những gì tôi đang tìm kiếm ở nơi đầu tiên, nó không hoạt động như mong đợi. Tôi đã mở một vấn đề trong repo Github về nó. github.com/takuaraki/DependenciesVersionChecker/issues/5
osrl 16/1/2016

Tôi đã thử điều này và nhận được một quả bóng thông báo lỗi / lỗi chung khi tôi nhấp vào "kiểm tra phiên bản"
Greg Enni

@GregEnnis Có vấn đề với phiên bản mới nhất của plugin. Sử dụng bản cũ hơn hoặc đợi cập nhật ...
Dev-iL

11

Xem tệp> Cấu trúc dự án, sau đó bấm vào "Gợi ý". Tôi biết, giải pháp này được đề xuất bởi Hemant Sharma và Jeremías Gersicich, nhưng Android Studio đã thay đổi nó trong phiên bản 3.4.1.

nhập mô tả hình ảnh ở đây


Bất cứ ai khác nhận được màn hình này chỉ trống trên android studio 3.5?
Nicola Beghin

@NicolaBeghin, tôi vừa kiểm tra dự án trống và nhận được 4 gợi ý. Vâng, có một thuật ngữ, khi nó không hiển thị đề xuất, vào tháng 7, nhưng họ đã sửa lỗi này. Tôi cho rằng, đó là vấn đề máy chủ của Google, đôi khi nó có thể xảy ra.
CoolMind

Không hỗ trợGradle KTS
Vlad

2

Đối với các phụ thuộc thư viện hỗ trợ (com.android.support), có một tùy chọn tốt hơn - andle

Nó có thể truy vấn jcenter và trung tâm maven là tốt.

Ba bước đơn giản để cập nhật tất cả dự án cùng một lúc.

1. cài đặt:

    $ sudo pip install andle

2. đặt sdk:

    $ andle setsdk -p <sdk_path>

3. cập nhật phụ thuộc:

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

--dryrun: chỉ in kết quả trong bảng điều khiển

--remote: kiểm tra phiên bản trong jcenter và mavenCentral

--gradle: kiểm tra phiên bản lớp

Xem https://github.com/Jintin/andle để biết thêm thông tin


chỉ dành cho thư viện hỗ trợ?
osrl

@osrl nếu bạn thêm --remote hoặc -r, nó sẽ phân tích phiên bản trên jcenter.
Jintin

0

Tôi đã xử lý vấn đề tương tự này và đã thử câu trả lời https://stackoverflow.com/a353371234/6412430

Điều thực sự hiệu quả với tôi trên Android Studio 3.4.1 là:

File -> Project Structure -> Dependencies

Khi bạn đã đạt đến điểm này, tất cả các phụ thuộc được bao gồm trong dự án hoặc mô-đun của bạn sẽ được liệt kê. Những cái đã lỗi thời sẽ bị thiếu và khi bạn chọn một cái, các chi tiết của nó sẽ được hiển thị cho bạn các tùy chọn để cập nhật Biến (nếu bạn tách nó khỏi khai báo) hoặc Phụ thuộc.

Loại muộn nhưng đây là những gì làm việc cho tôi.


Tôi cũng tìm thấy cách này. Lạ là ai đó đánh dấu trừ.
CoolMind

-1

Để được cập nhật hoặc đề xuất cho phụ thuộc dự án của bạn phải giống như dự án Android

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

Khi bạn đạt đến tab phụ thuộc Nhấp vào +nút được đặt ở góc trên cùng bên phải của cửa sổ. Khi bạn nhấp vào +Chọn, Library Dependencynó sẽ mở Cửa sổ mới cho Choose Library DependencyTìm kiếm phụ thuộc của bạn trong hộp tìm kiếm, tất cả các phụ thuộc Android được liệt kê sẽ được cập nhật.


Cảm ơn, nhưng danh sách này cũng chứa các thư viện tôi không sử dụng và đôi khi không chứa những gì tôi sử dụng. Ngoài ra Gson là com.google.code.gson:gson:2.2.4trong khi thực tế nó làcom.google.code.gson:gson:2.8.5
CoolMind

đôi khi phụ thuộc hoạt động với phiên bản lớp tương thích, Vui lòng kiểm tra xem bạn có đang sử dụng lớp được cập nhật trong lớp cấp độ Dự án của bạn không
Hemant Sharma
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.