Android Studio - Gradle 增量构建
Android Studio - Gradle incremental build
在过去的几天里,我一直在尝试改善我们项目的构建时间,但没有成功。我不介意必须等待 1 分钟 40 秒才能完成干净构建,但如果我在单个 java 文件中插入一行,我将获得与干净构建相同的构建时间。我一定是做错了什么,但我根本找不到任何指向正确方向的文档或堆栈溢出问题。我设法收集了一堆信息,我将把这些信息集中在这里,希望对这个主题有更好理解的人向我解释为什么我得到这些糟糕的构建时间。
开始了:
我知道我的 build.gradle 文件中的这个选项正是我要找的。
android {
dexOptions {
incremental true
}
...
出色的增量构建。但是,这显然对我不起作用,因为我的项目使用 multidex 功能来与 Lollipop 之前的 android 版本实现向后兼容。
Proguard 来拯救!使用 Proguard,我能够缩小我的可执行文件并删除所有未使用的方法。我在使用 proguard minify 时遇到了一些错误,但能够正确设置它并使其正常工作。伟大的!每次构建生成 Dex 大约需要 20 秒。不幸的是,没有什么是免费的,proguard gradle 任务需要大约 2 分 50 秒到 运行。比我最初的情况还要糟糕。
这个问题有解决办法吗?
终于找到解决办法了。它一直在官方文档中,我只是需要更深入地了解构建过程才能理解所说的内容。
增量构建和 multidex 确实是不兼容的选项。但是,对于 sdk 版本,通过仅重建受影响的 dex 文件,multidex apks 可以进行 21+ 增量构建。可以在这里找到更多信息:
我没有直接的答案如何解决 Gradle 的问题,但我有一个建议可以帮助您提高构建速度。
最近我 运行 遇到了同样的问题:我们的构建花了将近 4 分钟。我尝试了不同的构建选项,但没有获得明显的收益。
经过一番研究,我运行变成了Jrebel for Android。它类似于 "Instant run" 类固醇。它支持多种类型的更改(UI、方法、字段等)并实时更新应用程序而无需重新创建 activity(因此,保存状态)。通常,应用任何类型的更改都需要十点三十秒。
该工具不是免费的,但它们提供了不同的定价选项和试用帐户,因此您可以试用一下。它像 Android Studio 或 Eclipse 的常规插件一样工作,安装非常简单。
更新
现在他们甚至有免费版本:link to post
我今天(2017 年 11 月 13 日)尝试了此选项并收到以下构建警告:
警告:android.dexOptions.incremental
属性 已弃用,对构建过程没有影响。
然后我在谷歌上搜索了警告消息,答案确认自较新的 Gradle 版本以来,该条目已被弃用。参见
在过去的几天里,我一直在尝试改善我们项目的构建时间,但没有成功。我不介意必须等待 1 分钟 40 秒才能完成干净构建,但如果我在单个 java 文件中插入一行,我将获得与干净构建相同的构建时间。我一定是做错了什么,但我根本找不到任何指向正确方向的文档或堆栈溢出问题。我设法收集了一堆信息,我将把这些信息集中在这里,希望对这个主题有更好理解的人向我解释为什么我得到这些糟糕的构建时间。
开始了:
我知道我的 build.gradle 文件中的这个选项正是我要找的。
android { dexOptions { incremental true } ...
出色的增量构建。但是,这显然对我不起作用,因为我的项目使用 multidex 功能来与 Lollipop 之前的 android 版本实现向后兼容。
Proguard 来拯救!使用 Proguard,我能够缩小我的可执行文件并删除所有未使用的方法。我在使用 proguard minify 时遇到了一些错误,但能够正确设置它并使其正常工作。伟大的!每次构建生成 Dex 大约需要 20 秒。不幸的是,没有什么是免费的,proguard gradle 任务需要大约 2 分 50 秒到 运行。比我最初的情况还要糟糕。
这个问题有解决办法吗?
终于找到解决办法了。它一直在官方文档中,我只是需要更深入地了解构建过程才能理解所说的内容。
增量构建和 multidex 确实是不兼容的选项。但是,对于 sdk 版本,通过仅重建受影响的 dex 文件,multidex apks 可以进行 21+ 增量构建。可以在这里找到更多信息:
我没有直接的答案如何解决 Gradle 的问题,但我有一个建议可以帮助您提高构建速度。
最近我 运行 遇到了同样的问题:我们的构建花了将近 4 分钟。我尝试了不同的构建选项,但没有获得明显的收益。
经过一番研究,我运行变成了Jrebel for Android。它类似于 "Instant run" 类固醇。它支持多种类型的更改(UI、方法、字段等)并实时更新应用程序而无需重新创建 activity(因此,保存状态)。通常,应用任何类型的更改都需要十点三十秒。
该工具不是免费的,但它们提供了不同的定价选项和试用帐户,因此您可以试用一下。它像 Android Studio 或 Eclipse 的常规插件一样工作,安装非常简单。
更新
现在他们甚至有免费版本:link to post
我今天(2017 年 11 月 13 日)尝试了此选项并收到以下构建警告:
警告:android.dexOptions.incremental
属性 已弃用,对构建过程没有影响。
然后我在谷歌上搜索了警告消息,答案确认自较新的 Gradle 版本以来,该条目已被弃用。参见