Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将Google Guava添加到Android项目中-显著降低构建速度_Java_Android_Build_Guava_Dex - Fatal编程技术网

Java 将Google Guava添加到Android项目中-显著降低构建速度

Java 将Google Guava添加到Android项目中-显著降低构建速度,java,android,build,guava,dex,Java,Android,Build,Guava,Dex,将Google Guava r09添加到我们的Android项目后,构建时间显著增加,尤其是在DEX生成阶段。我知道DEX生成需要我们所有的类和我们依赖的所有JAR,并将它们转换为DEX格式。番石榴是一个相当大的罐子,大约1.1MB 这可能是构建放缓的原因吗 有什么办法可以加快速度吗 另外,通常我是从Intellij构建的,但我也尝试过用Maven构建-结果相同 谢谢 亚历克斯无论如何,我的直觉是这不是原因。仅仅用1.1MB字节码很难花很长时间做任何事情;我从来没有注意到德克斯花了很多时间。但我

将Google Guava r09添加到我们的Android项目后,构建时间显著增加,尤其是在DEX生成阶段。我知道DEX生成需要我们所有的类和我们依赖的所有JAR,并将它们转换为DEX格式。番石榴是一个相当大的罐子,大约1.1MB

  • 这可能是构建放缓的原因吗
  • 有什么办法可以加快速度吗
  • 另外,通常我是从Intellij构建的,但我也尝试过用Maven构建-结果相同

    谢谢


    亚历克斯

    无论如何,我的直觉是这不是原因。仅仅用1.1MB字节码很难花很长时间做任何事情;我从来没有注意到德克斯花了很多时间。但我们假设这是一个争论的问题

    如果这足够重要的话,你可以把番石榴
    .jar
    切成薄片,去掉你不使用的整个软件包。它由几个不一定相互关联的部分组成


    我不认为这会加快速度,但也许值得一提:如果您通过Proguard(优化器现在与SDK捆绑在一起)运行构建,它可以在您使用DEX之前删除未使用的类(并且,对字节码进行一系列其他伟大的优化)。当然,这个过程可能比索引本身花费的时间要长。

    我曾尝试将我需要的类切分出来,但很快发现自己有40个类并在计数,而且这很难看:)ProGuard的问题是,我还没有找到将其嵌入Intellij build的方法。谢谢。+1提到Proguard,即使需要时间(至少在这种情况下)也是值得的@AlexV:你不能手动运行一次Proguard来找出需要哪些类吗?我敢打赌数到40它不会感到累…@maaartinus最后我做的是将我使用的函数提取到我自己的类中。我知道这很糟糕,但即使在运行Proguard之后,仍然有太多的番石榴课程。我最终得到了6个类(列表、地图、可编辑类等)。@alex ProGuard在Idea中:进入文件>项目结构>模块>您的模块>Android>编译器选项卡,然后选中Run ProGuard。然后转到您的模块目录并运行
    android update project-p.
    生成默认的proguard-project.txt。就是这样,在类到达DEX编译器之前,您需要ProGuard对它们进行优化和模糊处理。您可以通过修改ProGuard project.txt来调整ProGuard的功能。我也注意到了这一点。添加番石榴使我的构建耗时约30秒而不是约8秒。我已将我使用的类与番石榴分离。这有助于缩短我的构建时间。不幸的是,除非Guava的人决定将库拆分成更小的模块,否则这是我认为加速开发构建的唯一方法。