9

在过去的几天里,我一直在努力改善我们项目的构建时间,但没有成功。我不介意必须等待 1 分钟 40 秒才能进行干净构建,但是如果我在单个 java 文件中插入一行,我将获得与干净构建相同的构建时间。我一定是做错了什么,但我根本找不到任何文档或堆栈溢出问题来指出我正确的方向。我设法收集了一堆我将集中在这里的信息,希望对这个主题有更好理解的人解释我为什么会得到这些糟糕的构建时间。

它是这样的:

  • 我知道我的 build.gradle 文件中的这个选项是我所寻求的。

    android {
        dexOptions {
            incremental true
        }
    ...
    

    光荣的增量构建。但是,这显然对我不起作用,因为我的项目使用 multidex 功能与 Lollipop 之前的 android 版本兼容。

  • 前卫救援!使用 Proguard,我可以缩小我的可执行文件并删除所有未使用的方法。我在使用 proguard minify 时遇到了一些错误,但能够正确设置并使其正常工作。伟大的!每次构建需要大约 20 秒的 Dex 生成。不幸的是,没有什么是免费的,proguard gradle 任务大约需要 2 分 50 秒才能运行。甚至比我最初的情况还要糟糕。

这个问题有解决方案吗?

4

3 回答 3

13

终于找到了解决办法。它一直在官方文档中,我只需要对构建过程有更深入的了解才能理解所说的内容。

增量构建和 multidex 确实是不兼容的选项。但是,对于 sdk 版本,通过仅重建受影响的 dex 文件,multidex apk 可以进行 21+ 增量构建。更多信息可以在这里找到:

http://developer.android.com/tools/building/multidex.html

于 2015-09-01T19:32:31.357 回答
3

我今天(2017 年 11 月 13 日)尝试了此选项并收到以下构建警告:

警告:该android.dexOptions.incremental属性已被弃用,它对构建过程没有影响。

然后我用谷歌搜索了警告消息,答案确认自从更新的 Gradle 版本以来,该条目已被弃用。请参阅android.dexOptions.incremental 属性已弃用

于 2017-11-13T15:35:31.657 回答
3

我没有直接的答案如何解决 Gradle 的问题,但我有一个建议可以帮助您提高构建速度。

最近我遇到了同样的问题:我们的构建花了将近 4 分钟。我尝试了不同的构建选项,但没有获得明显的利润。

经过一番研究,我遇到了Jrebel for Android。这就像类固醇上的“即时跑步”。它支持多种类型的更改(UI、方法、字段等)并实时更新应用程序而无需重新创建活动(因此,保存状态)。通常,应用任何类型的更改都需要十三十秒。

该工具不是免费的,但它们提供了不同的定价选项和试用帐户,因此您可以尝试一下。它像往常一样适用于 Android Studio 或 Eclipse 的插件,安装非常简单。

更新

现在他们甚至有免费版本: 链接到帖子

于 2016-09-16T07:13:45.423 回答