Sử dụng thư viện Google Guava để phát triển Android có phải là một ý tưởng hay không?


122

Tôi đang tham gia vào việc phát triển ứng dụng Android, một ứng dụng di động khá "dày" cho một dịch vụ Web. Nó giao tiếp nhiều với máy chủ nhưng cũng có nhiều logic bên trong. Vì vậy, tôi quyết định sử dụng một số tính năng của Google Guavathư viện để đơn giản hóa quá trình phát triển. Đây là danh sách các tính năng mà tôi rất quan tâm: tập hợp bất biến, utils cơ sở, phần mở rộng tập hợp, hàm lập trình hàm và thành ngữ ( common.collectcommon.base), tiện ích nguyên thủy ( common.primitives), tiện ích băm ( common.hash), utils đồng thời (tương lai và AsyncFunction). Những thứ tôi không muốn sử dụng trong Android: common.cache(xem câu hỏi bên dưới), common.eventbus(chúng tôi có các lib dành riêng cho Android tốt hơn cho việc này, chẳng hạn như Otto ), common.io(chúng tôi có thể sử dụng okio cho Android hiện nay).

Tôi đọc rằng việc sử dụng Guava cho Android có thể làm chậm đáng kể quá trình biên dịch và cũng làm giảm hiệu suất toàn bộ thời gian chạy: Hiệu suất kém với Guava Cache trên Android (trong trường hợp này là hợp lý và không cần sử dụng bộ nhớ cache của Guava cho Android) và Thêm Google Dự án từ Guava sang Android - làm chậm đáng kể quá trình xây dựng

Vì vậy, sử dụng thư viện Guava trong dự án Android có hiệu quả không hay thư viện này được thiết kế để chỉ sử dụng cho phát triển phía máy chủ và tôi nên sử dụng các giải pháp tiêu chuẩn? Bất kỳ lời giải thích sẽ rất được đánh giá cao.


2
" Nhưng tôi nghe nói rằng [...] " nguồn của bạn là gì?
jlordo

3
@jlordo Ok thấy sửa của tôi
Oleksandr Karaberov

2
Nó an toàn để sử dụng, nhưng tất nhiên: Bạn cần kiểm tra từng lớp của thư viện nếu nó phù hợp với nhu cầu của bạn. Guava Cache đã được triển khai cho phía Máy chủ (được viết sẵn trong tài liệu), vì vậy không sử dụng nó trên Android. Thời gian xây dựng thường không thực sự là vấn đề, thời gian chạy quan trọng hơn.
John Smith

4
appbrain.com/stats/libraries/details/guava/google-guava cho biết rằng Ổi được sử dụng trong rất nhiều ứng dụng Android.
Louis Wasserman

3
Thật xấu hổ khi các câu trả lời mới không thể được đăng (Tôi vì một người đã bỏ phiếu cho việc mở lại). Có một số vấn đề thực tế và thú vị, ví dụ liên quan đến giới hạn phương pháp 65k đáng được quan tâm.
Jonik

Câu trả lời:


117

(Quá lớn để nhận xét, vì vậy tôi đăng câu trả lời.) Cá nhân tôi sử dụng toàn bộ thư viện Guava trong mọi dự án Java và khi tôi không gặp vấn đề về hiệu suất đáng kể và được cấu hình đúng cách . Ví dụ: nếu bạn có lo ngại về bộ nhớ như trong môi trường Android, bạn có thể sử dụng ProGuard để chỉ lấy những phần Guava mà bạn thực sự cần.

Hơn nữa, có rất nhiều ứng dụng Android sử dụng Guava - không chỉ những ứng dụng nhỏ, tức là Google Tìm kiếm và Youtube, trực tiếp đến từ Google.

(Bạn cũng sẽ thấy lưu ý về khả năng tương thích .)


105
Tôi tò mò về Ổi và kích thước APK . Thử nghiệm đơn giản cho thấy những điều sau: "Xin chào thế giới" & không nhiều thứ khác (gỡ lỗi): 27KB ; "Xin chào thế giới" với sự phụ thuộc Guava (15.0) và cách sử dụng Guava nhỏ (gỡ lỗi): 705KB ; tương tự, phát hành bản dựng, được tối ưu hóa với ProGuard: 22KB . Thử nghiệm này, cùng với việc đã sử dụng Guava trong khi phát triển một ứng dụng lớn trong thế giới thực, đã khẳng định niềm tin của tôi rằng Guava cũng hoàn toàn ổn trên Android!
Jonik

2
Ngoài ra, nếu bạn gặp sự cố khi ProGuard hoạt động với sự phụ thuộc vào Guava, hãy xem câu trả lời tôi vừa đăng này.
Jonik

2
Chỉ là một quan sát trên liên kết cho các ứng dụng hàng đầu sử dụng Guava. Tôi là một người dùng nhiều Facebook, Spotify, Google Dịch và chúng không phải là những ứng dụng chạy nhanh nhất hiện có đúng không? Thực tế là chúng rất tệ. FB Tôi không cần phải nói với bạn, Spotify với các bản cập nhật mới nhất đã khiến tôi chuyển từ Premium sang Grooveshark. Facebook và Spotify thực sự phải vật lộn với trải nghiệm người dùng trên thiết bị di động và thật kỳ lạ, tôi thấy Google Dịch đã chậm lại rất nhiều cho một việc đơn giản như vậy. Bây giờ tôi chưa thử Guava. Nhưng tôi sẽ suy nghĩ kỹ trước khi làm. Đây là liên kết: appbrain.com/stats/libraries/details/guava/google-guava
albertpeiro Ngày

7
Một điều cần lưu ý với Guava là giới hạn phương thức Android 65k, vì lib Guava chứa hơn 13k phương thức. Đạt đến giới hạn không phải là vấn đề vì bạn có thể sử dụng Multidex (nhưng tôi chưa có kinh nghiệm đầu tiên về điều đó). Xem thảo luận liên quan tại hướng dẫn các phương pháp hay nhất của Futurice dành cho Android.
Jonik

3
@Jonik Không hiểu sao không thấy nhiều người nhắc đến chuyện đó. Chắc chắn bạn có proguard, nhưng nó có thực sự đáng giá không? Còn về các bản dựng gỡ lỗi, bạn cũng sẽ phải chạy bảo vệ trên những bản dựng đó. Tôi cũng không coi multidexing là một giải pháp. Nó dễ dàng thêm thời gian tải 2-5 giây cho ứng dụng. Trong các dự án thực sự lớn, không khó để đạt đến giới hạn 65 nghìn. Imo Guava là một nguyên khối đến nỗi tôi không thực sự là một fan hâm mộ. Tôi muốn sử dụng các thư viện nhỏ hơn, tập trung mang lại một nhóm chức năng cụ thể.
Joao Sousa
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.