Java 使用Google Guava库开发Android是个好主意吗?

Java 使用Google Guava库开发Android是个好主意吗?,java,android,guava,Java,Android,Guava,我参与了Android应用程序的开发,这是一个相当“厚”的Web服务移动客户端。它与服务器进行大量通信,但也有很多内部逻辑。所以,我决定使用googleguava库的一些特性来简化开发过程。下面是我非常感兴趣的特性列表:不可变集合、基本UTIL、集合扩展、函数编程糖和习惯用法(common.collect和common.base)、原语实用程序(common.primitives)、哈希实用程序(common.hash)、并发UTIL(futures和AsyncFunction)。我不想在And

我参与了Android应用程序的开发,这是一个相当“厚”的Web服务移动客户端。它与服务器进行大量通信,但也有很多内部逻辑。所以,我决定使用
googleguava
库的一些特性来简化开发过程。下面是我非常感兴趣的特性列表:不可变集合、基本UTIL、集合扩展、函数编程糖和习惯用法(
common.collect
common.base
)、原语实用程序(
common.primitives
)、哈希实用程序(
common.hash
)、并发UTIL(futures和
AsyncFunction
)。我不想在Android中使用的东西:
common.cache
(见下面的问题),
common.eventbus
(我们有更好的Android专用库,例如),
common.io
(我们现在可以在Android中使用)。 我了解到,使用Guava for Android可以显著减慢编译过程,并降低整个运行时性能: (在这种情况下,这是合理的,不需要使用Guava的Android缓存)和 那么,在Android项目中使用Guava库是否有效,或者该库仅用于服务器端开发,我应该使用标准解决方案?任何解释都将不胜感激。

(太大,无法评论,因此我发布了一个答案。)就我个人而言,我在每个Java项目中都会使用整个Guava库,当我没有重大且正确分析的性能问题时。例如,如果您确实有Android环境中的内存问题,您可以使用它来获取您真正需要的Guava的这些部分

此外,不仅仅是谷歌搜索和Youtube这些直接来自谷歌的小公司


(你也应该看到。)

“但我听说[…]”你的资料来源是什么?@jlordo好的,看看我的编辑。当然,你需要检查库中的每个类是否适合你的需要。Guava缓存是为服务器端实现的(很可能写在文档中),所以不要在android上使用它。构建时间通常不是一个真正的问题,运行时间更重要。这表明很多android应用程序都使用了番石榴。新的答案无法发布令人遗憾(我赞成重新打开)。有一些真实而有趣的问题值得关注,例如与的相关问题。我对Guava和APK的大小很好奇。简单的测试显示如下:“Hello world”&没有太多其他(调试):27KB;“Hello world”与Guava(15.0)依赖性和少量Guava用法(调试):705KB;同样,发布版本,使用ProGuard优化:22KB。这个测试,再加上在开发一个大型现实世界应用程序时使用过Guava,证实了我的信念,Guava在Android上也很好!另外,如果你在让ProGuard使用Guava依赖项时遇到问题,请参阅我刚才发布的文章。只是对使用Guava的顶级应用程序。我是Facebook、Spotify和Google Translate的大量用户,它们不是运行最快的应用程序,对吧?事实上它们很糟糕。FB我不需要告诉你,Spotify的最新更新让我从Premium升级到Grooveshark。Facebook和Spotify在移动设备上的用户体验上真的很挣扎,奇怪的是,我发现了谷歌le Translate做了这么简单的事情,速度慢了很多。现在我还没有尝试过番石榴。但我会三思而后行。这是一个链接:番石榴需要注意的是Android 65k方法限制,因为番石榴库包含超过13k的方法。达到这个限制应该不会是一个问题(但我没有这方面的第一手经验)请参阅未来的Android最佳实践指南。@ JONICK,我不知道为什么我没有看到更多的人提到这一点。当然你有PROGART,但是它真的值得吗?关于调试构建,你也必须运行PROGARID。我不认为MuldiDype也可以是一个解决方案。它增加了2-5秒的加载时间到应用程序。y大型项目达到65k上限并不难。Imo Guava是一个巨大的整体,我不是一个真正的粉丝。我宁愿使用较小的、有针对性的库,引入特定的功能集。