Чи корисно використовувати бібліотеку Google Guava для розробки Android?


122

Я беру участь у розробці програми Android, яка є досить "товстим" мобільним клієнтом для веб-сервісу. Він сильно спілкується з сервером, але також має багато внутрішньої логіки. Отже, я вирішив використати деякі функції Google Guavaбібліотеки для спрощення процесу розробки. Ось перелік особливостей, які мене дуже цікавлять: незмінні колекції, базові утиліти, розширення колекцій, цукор функціонального програмування та ідіоми ( common.collectі common.base), утиліти примітивів ( common.primitives), утиліти хешування ( common.hash), одночасні утиліти (ф'ючерси та AsyncFunction). Те, що я не хочу використовувати в Android: common.cache(див. Питання нижче), common.eventbus(у нас для цього є кращі специфічні для Android, наприклад Otto ), common.io(ми можемо використовувати okio для Android зараз).

Я читав, що використання Guava для Android може значно уповільнити процес компіляції, а також знизити всю ефективність виконання: Погана продуктивність з кешам Guava на Android (у цьому випадку це розумно і немає необхідності використовувати кеш Guava для Android) та додавання Google Проект Guava для Android - значно уповільнює збірку

Отже, чи ефективно використовувати бібліотеку Guava в проекті Android або ця бібліотека призначена для використання лише для розробки на серверній основі, і мені слід використовувати стандартні рішення? Будь-які пояснення будуть дуже вдячні.


2
" Але я чув, що [...] " які ваші джерела?
jlordo

3
@jlordo Добре дивіться мої зміни
Олександр Караберов

2
Це безпечно у використанні, але звичайно: Вам потрібно перевірити, чи не відповідає вашим потребам кожен клас бібліотеки. Кеш Guava був реалізований для серверної сторони (що пророчно написано в документах), тому не використовуйте її на android. Час побудови зазвичай не є проблемою, час роботи важливіший.
Джон Сміт

4
appbrain.com/stats/libraries/details/guava/google-guava вказує, що Guava використовується в багатьох додатках для Android.
Луї Вассерман

3
Ганьба, що нові відповіді не можна публікувати (я за одного голосував за повторне відкриття). Є деякі реальні та цікаві проблеми, наприклад, пов'язані з обмеженням методу 65k, які заслуговують на увагу.
Джонік

Відповіді:


117

(Занадто великий для коментарів, тому я публікую відповідь.) Особисто я використовую цілу бібліотеку Guava у кожному проекті Java, і коли у мене немає значних і правильно профільованих проблем із продуктивністю. Наприклад, якщо у вас є проблеми з пам’яттю, наприклад, в середовищі Android, ви можете використовувати ProGuard, щоб отримати лише ті частини Guava, які вам справді потрібні.

Більше того, існує багато додатків для Android, які використовують Guava - не лише невеликі, тобто пошук Google і Youtube, які безпосередньо надходять від Google.

(Ви також повинні побачити примітку про сумісність .)


105
Мені було цікаво розмір Guava & APK . Просте тестування виявило наступне: "Hello world" & не багато іншого (налагодження): 27KB ; "Hello world" із залежністю від Guava (15.0) та незначним використанням Guava (налагодження): 705KB ; те саме, випуск версії, оптимізований з ProGuard: 22 КБ . Цей тест разом з тим, що використовував Guava під час розробки великого додатка в реальному світі, підтвердив мою переконання, що Guava абсолютно добре і на Android!
Джонік

2
Крім того, якщо у вас виникли проблеми з тим, щоб ProGuard працював із залежністю від Guava, дивіться цю відповідь, яку я щойно опублікував.
Джонік

2
Просто спостереження за посиланням для найкращих програм, що використовують Guava. Я важкий користувач Facebook, Spotify, Google Translate, і вони не найшвидші програми, які там працюють, правда? Насправді вони погані. FB Мені не потрібно говорити, Spotify з останніми оновленнями змусив мене перейти від Premium до Grooveshark. Facebook і Spotify справді борються з користувацьким досвідом роботи на мобільних пристроях, і мені цікаво, що Google Translate значно уповільнив роботу настільки простої речі. Тепер я не пробував Гуаву. Але я подумаю два рази, перш ніж зробити це. Це посилання: appbrain.com/stats/libraries/details/guava/google-guava
albertpeiro

7
Що слід пам’ятати про Guava, це обмеження методу Android 65k, оскільки в Guava lib міститься понад 13 тис. Методів. Досягнення ліміту не повинно бути проблемою, оскільки ви можете перейти на Multidex (але я не маю цього досвіду з перших рук). Дивіться відповідну дискусію в посібнику з найкращих практик Android на Futurice.
Джонік

3
@Jonik Я не знаю, чому я не бачу більше людей, які згадують про це. Впевнені, що у вас є захисник, але чи варто це дійсно? Що стосується збірок налагодження, вам також доведеться запустити proguard. Я також не вважаю мультидексінг рішенням. Це легко додає 2-5 секунд час завантаження додатку. У дійсно великих проектах не так важко досягти межі 65 к. Імо Гуава - такий моноліт, що я насправді не шанувальник. Я вважаю за краще використовувати менші цілеспрямовані бібліотеки, які забезпечують певний набір функціональних можливостей.
Жоао Суса
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.