2015-09-01 112 views
6

在过去的几天里,我一直在努力改善项目的构建时间,但没有运气。我不介意不得不等待1m40s的清洁构建,但是如果我在一个java文件中插入一行,我将获得与清理构建相同的构建时间。我一定在做错事,但我根本找不到任何文档或堆栈溢出问题,这些问题指向正确的方向。我设法收集了一些我将集中在这里的信息,希望能够更好地理解该主题的人解释为什么我会得到这些糟糕的构建时间。Android Studio - Gradle增量构建

这里有云:

  • 我明白,在我的build.gradle文件这个选项就是我所追求的。

    android { 
        dexOptions { 
         incremental true 
        } 
    ... 
    

    辉煌增量构建。然而,这对我来说不起作用,显然是因为我的项目在棒棒糖之前使用了multidex功能来与android版本进行retrocompatibility。

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

有没有解决这个问题的方法?

+0

在全局Gradle设置中启用“脱机工作”有帮助吗? – nhaarman

+0

不幸的是,没有。在我的构建过程中非常耗时的任务是dex的生成。实际上,获取依赖关系非常快。 –

回答

10

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

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

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

+0

你有没有考虑过使用BUCK? https://www.google.com/search?q=buck+facebook&ie=utf-8&oe=utf-8 –

+0

我会研究它,谢谢你的建议!我不确定我是否可以在工作中使用它,但我一定会在我的个人项目中尝试。 –

3

我没有直接回答如何与摇篮解决这个问题,但我有一个建议,可以帮助你提高你的构建速度。

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

经过一番研究,我碰到了Jrebel for Android。它类似于类固醇上的“即时跑步”。它支持多种类型的更改(UI,方法,字段等)并实时更新应用程序,而无需重新创建活动(因此可以节省状态)。通常,需要十几秒钟才能应用任何类型的更改。

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

更新

现在他们甚至免费版本:link to post

0

我试过这个选项今日(二零一七年十一月十三日),得到了下面的生成警告:

警告:android.dexOptions.incremental属性不推荐使用,它对构建过程没有影响。

然后我搜索了警告消息,答案证实,自从一个更新的Gradle版本以来,该条目已被弃用。请参阅android.dexOptions.incremental property is deprecated