【发布时间】:2015-12-08 14:56:04
【问题描述】:
构建我的 Android 应用大约需要 90 秒(“快速”),每次更新我的代码最多需要 3 分钟。这完全是浪费时间,我认为解决方案必须触手可及。我尝试调查该问题,发现不同的博客文章和带有建议的 SO 答案,其中大部分我都尝试过。
- 我有带有 org.gradle.deamon=true 的 gradle.properties 文件
- 我在带有 Gradle Prefence 的 Android Studio 上运行以进行离线工作(改进了,但仍然很慢)
- 我在命令行上运行(更快,但仍然很慢)
- 在 build.gradle、defaultConfig 中,我将 multiDexEnabled 设置为 false
- 在 build.gradle、dexOptions 中,我将 preDexLibraries 设置为 false
- 在 gradle-wrapper.properties 中,我获取了最新的 gradle 版本 (2.8)(显着的速度变化发生在 2.4 上)
这个过程似乎需要很长时间,大约占总构建时间的 85% 是 :app:transformClassesWithDexForDebug
这个过程实际上在做什么?我可以找到遇到崩溃的人,但它对我来说很好,除了它需要很多时间。我是否需要它,因为此时我真的不需要 Dex?
另外,我有 13 个依赖项和 3 个 testCompile 依赖项。我已经指出了特定的播放包,所以我不会编译我不需要的东西。如果我理解正确,gradle 正在构建每个项目构建的所有这些库。如果这是正确的,有没有办法跳过它?我可以自己构建它们作为包装库并包含它们而不需要每次都处理它们吗?这可能会让我失去一些未来更改依赖项的灵活性,但在这一点上,我觉得我每天很容易在等待 gradle 时损失一个多小时。我不确定灵活性对我来说是否值得。
我期待获得有关如何改进构建过程的任何指示。提前谢谢你。
【问题讨论】:
-
知道有人和我现在的情况完全一样,真是一种解脱!在此期间你有任何进展吗?谢谢!
-
自从我发布此内容并尝试了我遇到的每一个建议以来已经有一段时间了,并取得了不同程度的成功。在@markdb314 提到的Android Studio 2.1 发布之前,没有人真正将构建速度提高到可以接受的程度。尽管之前可能可用,但只有在此版本之后,才可以清楚地执行 dex-step in process。这将我的构建时间显着缩短到平均 20-30 秒。
-
只是好奇,你用的是新的数据绑定框架吗?
-
不,我没有在有这些问题的项目中使用数据绑定框架。
标签: gradle android-build