如何将guava库的**部分**导入Android应用程序(gradle)

如何将guava库的**部分**导入Android应用程序(gradle),android,gradle,guava,Android,Gradle,Guava,任何Android开发人员都应该知道,apk有65k方法限制(因为VM只有16位用于方法处理)。您自己应该很难访问它,但只要您开始添加一些库,就很容易了 从去年开始,您可以通过在Android 5.0及以上版本上启用MultiDex(并为以前的Android版本添加支持库)来摆脱这种情况。即使这是可能的,减少方法数量并获得更小的api(性能应该更好,不是吗?) 在某种程度上,Android的家伙们意识到他们的Google Play服务库的规模是无法承受的(20k方法),他们做出了一个伟大的决定,

任何Android开发人员都应该知道,apk有65k方法限制(因为VM只有16位用于方法处理)。您自己应该很难访问它,但只要您开始添加一些库,就很容易了

从去年开始,您可以通过在Android 5.0及以上版本上启用MultiDex(并为以前的Android版本添加支持库)来摆脱这种情况。即使这是可能的,减少方法数量并获得更小的api(性能应该更好,不是吗?)

在某种程度上,Android的家伙们意识到他们的Google Play服务库的规模是无法承受的(20k方法),他们做出了一个伟大的决定,将其划分到不同的模块中,这样你就可以简单地添加你需要的部分,比如(有等级):

你知道是否可以用番石榴库做类似的事情吗?大约有15K种方法,所以它会非常有用。我只想用番石榴的一小部分,所以我不需要/不想包括另一部分。我一直在查阅文档和谷歌搜索,但什么也没找到

compile group: 'com.google.guava', name: 'guava', version: '18.0'
两年前有人问过类似的问题,可能是为了一个Java项目,但当时不存在更小的番石榴部分

我唯一想到的是复制所需的Guava类,而不是加载库,但我认为这是一个糟糕的解决方案

你不认为任何一个大的图书馆都应该像使用Play服务那样使用模块拆分系统吗


编辑:此外,multidex任务花费的时间太长(之前不到15秒时为一分半),因此每次启动应用程序时,我都必须等待。因此,即使使用Proguard是生产版本的一个很好的解决方案,它也不适合于开发,因为它需要比多重索引更长的时间。

有正在进行的工作要做,但确实有。如前所述,允许您从最终构建中排除您不使用的Guava部分。

Guava开发人员知道这个问题,并且支持。但我不知道如何将其与Gradle整合。不幸的是,番石榴还没有模块化。我们所做的是,我们有两种构建风格:一种是使用multidex的开发人员;一个版本使用proguard。
compile group: 'com.google.guava', name: 'guava', version: '18.0'