Android開発にGoogle Guavaライブラリを使用することは良い考えですか?


122

私は、Webサービス用の「分厚い」モバイルクライアントであるAndroidアプリケーションの開発に携わっています。サーバーと強く通信しますが、内部ロジックもたくさんあります。そこで、Google Guavaライブラリのいくつかの機能を使用して開発プロセスを簡略化することにしました。これは、私が非常に興味を持っている機能のリストです:不変コレクション、ベースユーティリティ、コレクション拡張、関数型プログラミングシュガーとイディオム(common.collectおよびcommon.base)、プリミティブユーティリティ(common.primitives)、ハッシュユーティリティ(common.hash)、同時ユーティリティ(未来およびAsyncFunction)。私 Androidで使用したくないもの:(common.cache下記の質問を参照)、common.eventbus(これにはOttoなどのより良いAndroid固有のライブラリcommon.ioがあります)、(okioを使用できます Android向け)。

:私は、Android用のグアバを使用すると、大幅にコンパイル処理を遅くしても、全体の実行時のパフォーマンス低下することを読んで 、Android上グアバキャッシュバートパフォーマンス (この場合には、それが合理的であるとAndroidのためのグアバのキャッシュを使用する必要はありません)と Googleに追加しますグアバからAndroidプロジェクト-ビルドが大幅に遅くなる

では、AndroidプロジェクトでGuavaライブラリを使用するのは効率的ですか、またはこのライブラリはサーバー側の開発でのみ使用するように設計されていますか?標準のソリューションを使用する必要がありますか?説明をいただければ幸いです。


2
しかし、私はそれを聞いた[...]」あなたの情報源は何ですか?
jlordo

3
@jlordo Ok私の編集を見てください
Oleksandr Karaberov '20

2
安全に使用できますが、もちろん必要に応じて、ライブラリの各クラスを確認する必要があります。Guava Cacheはサーバー側(ドキュメントに適切に記述されている)に実装されているため、androidでは使用しないでください。ビルド時間は通常実際には問題ではなく、実行時間の方が重要です。
John Smith

4
appbrain.com/stats/libraries/details/guava/google-guavaは、Guavaが多くのAndroidアプリで使用されていることを示しています。
Louis Wasserman、

3
新しい回答を投稿できないのは残念です(私は再開のために投票しました)。注目に値する65kメソッドの制限など、いくつかの現実的で興味深い問題があります。
Jonik 2015年

回答:


117

(コメントとしては大きすぎるので、私は回答を投稿します。)個人的には、すべてのJavaプロジェクトでGuavaライブラリー全体を使用し、重要で適切にプロファイルされたパフォーマンスの問題がない場合。たとえば、Android環境のようなメモリの問題がある場合は、ProGuardを使用して、本当に必要なGuavaのこれらの部分のみを取得できます。

さらに、グアバを使用する多くのAndroidアプリがあります。Googleから直接提供される、Google検索やYoutubeなどの小さなアプリだけではありません。

互換性に関するメモもご覧ください。)


105
グアバとAPKのサイズが気になりました。「こんにちは」&(デバッグ)他にはあまりない:簡単なテストでは、次のことを明らかにした27キロバイトを。グアバ(15.0)依存関係とマイナーなグアバ使用(デバッグ)を伴う「Hello world」:705KB ; 同じ、リリースビルド、ProGuardで最適化:22KB。このテストは、大規模な実世界のアプリの開発中にGuavaを使用したことと相まって、AndroidでもGuavaはまったく問題ないと確信しました。
Jonik、2014年

2
また、ProGuardがGuava依存関係で動作する問題が発生した場合は、先ほど投稿したこの回答を参照してください。
Jonik、2014年

2
Guavaを使用しているトップアプリのリンクに関する観察です。私はFacebook、Spotify、Google翻訳のヘビーユーザーですが、これらのアプリが不足している最速のアプリではありませんか?実際、彼らは悪いです。FBあなたに言う必要はありません。Spotifyの最新のアップデートで、PremiumからGroovesharkに移行しました。FacebookとSpotifyはモバイルでのユーザーエクスペリエンスに本当に苦労しています。不思議なことに、Googleの翻訳は、このような単純なことで大幅に速度が低下していることに気付きました。今、私はグアバを試していません。しかし、私は私がする前に二度考えます。これはリンクです:appbrain.com/stats/libraries/details/guava/google-guava
albertpeiro

7
Guava libには13kを超えるメソッドが含まれているため、Guavaについて知っておくべきことはAndroid 65kメソッドの制限です。Multidexを使用できるので、制限に達しても問題になりません(ただし、私はそれを直接経験していません)。参照関連する説明 Futurice Androidのベストプラクティスガイドでは。
Jonik

3
@Jonikなぜ私はそれについて言及する人が増えないのか分かりません。確かにあなたはプロガードを持っていますが、それは本当に価値がありますか?デバッグビルドについてはどうでしょうか、それらに対してもプロガードを実行する必要があります。私はマルチデクシングも解決策とは考えていません。それは簡単にアプリに2-5秒の読み込み時間を追加します。本当に大きなプロジェクトでは、65kの制限に達するのはそれほど難しくありません。Imo Guavaは一枚岩なので、私はあまりファンではありません。私はむしろ、特定の機能セットを導入する、より小さく焦点を絞ったライブラリを使用したいと思います。
Joao Sousa、2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.