优化 android studio 编译效率的方法

发布于 2025-02-19 03:17:44 字数 3402 浏览 9 评论 0

如果你之前用 eclipse 开发过 Android app 的化,转到 android studio 的第一反应也许就是:编译速度有点慢。表现的最明显的一点就是,当我使用 eclipse 开发的时候,选中了 auto building。这个时候 我更改了几个字符,eclipse 会速度非常快的编译出一个新的 apk。

而 android studio 使用 gradle 编译,每次编译,即便是更改的代码量很少,也会按照预先设置的 task 的顺序,依次走完编译的各项流程。所以 这点就让人很痛苦。然而问题总还是要被解决的,作者曾经亲眼看到过使用 android studio 仅仅用了 2.5 秒就编译完毕(在代码更改很少的情况下)。现在把如何优化 gradle 编译速度的方法记录在此,希望可以 帮助到广大的同行们。

准备工作

gradle 现在最新的版本是 2.4, 相比较之前的版本,在编译效率上面有了一个非常大的提高,为了确保你的 android 项目使用的是最新版的 gradle 版本,有两种方法可以使用,下面依次进行介绍。

1、在 build.gradle 中进行设置

在你的项目 gradle 文件内(不是 app 里面的 gradle 文件), 添加一个 task, 代码如下:

task wrapper(type: Wrapper) {
    gradleVersion = '2.4'
}

然后打开 terminal, 输入 ./gradlew wrapper ​, 然后 gradle 就会自动去下载 2.4 版本,这也是官方推荐的手动设置 gradle 的方法( http://gradle.org/docs/current/userguide/gradle_wrapper.html )

2、使用 android studio 对 gradle 版本进行设置

这种方法需要你去手动去 gradle 官网下载一个 zip 包,解压缩后,打开 android studio 设置界面的 Project Structure. 然后手动添加你解压缩后的 gradle 的磁盘路径即可。

有一点需要注意的是,这种设置方法仅适用于在你的项目中使用 gradle wrapper 进行编译打包的操作(就是 android studio 默认需要的东东).如果你想使用 gradle 做其他的事情,请出门左转,去 gradle 官网( http://gradle.org )

守护进程,并行编译

通过以上步骤,我们设置好了 android studio 使用最新的 gradle 版本,下一步就是正式开启优化之路了. 我们需要将 gradle 作为守护进程一直在后台运行,这样当我们需要编译的时候,gradle 就会立即跑过来然后 吭哧吭哧的开始干活.除了设置 gradle 一直开启之外,当你的工作空间存在多个 project 的时候,还需要设置 gradle 对这些 projects 并行编译,而不是单线的依次进行编译操作.

说了那么多, 那么怎么设置守护进程和并行编译呢?其实非常简单,gradle 本身已经有了相关的配置选项,在你电脑的 GRADLE_HOME 这个环境变量所指的那个文件夹内,有一个 .gradle/gradle.properties 文件. 在这个文件里,放入下面两句话就 OK 了:

org.gradle.daemon=true
org.gradle.parallel=true

有一个地方需要注意的是,android studio 本身在编译的时候,已经是使用守护进程中的 gradle 了,那么这里加上了 org.gradle.daemon=true 就是保证了你在使用命令行编译 apk 的时候也是使用的守护进程.

你也可以将上述的配置文件放到你 project 中的根目录下,以绝对确保在任何情况下,这个 project 都会使用守护进程进行编译.不过有些特殊的情况下也许你应该注意守护进程的使用,具体的细节参考 http://gradle.org/docs/current/userguide/gradle_daemon.html#when_should_i_not_use_the_gradle_daemon

在使用并行编译的时候必须要注意的就是,你的各个 project 之间不要有依赖关系,否则的话,很可能因为你的 Project A 依赖 Project B, 而 Project B 还没有编译出来的时候,gradle 就开始编译 Project A 了.最终 导致编译失败.具体可以参考 http://gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects。

还有一些额外的 gradle 设置也许会引起你的兴趣,例如你想增加堆内存的空间,或者指定使用哪个 jvm 虚拟机等等(代码如下)

org.gradle.jvmargs=-Xmx768m
org.gradle.java.home=/path/to/jvm

如果你想详细的了解 gradle 的配置,请猛戳 http://gradle.org/docs/current/userguide/userguide_single.html#sec:gradle_configuration_properties

一个实验性的功能

最后一个要介绍的是 incremental dexing, 这个功能目前还在试验阶段,android studio 默认是关闭的, 作者个人是非常推荐的,程序员就是爱折腾啊.

开启 incremental dexing 也是非常简单的,就是在 app 级别的 buid.gradle 文件中加入下面的代码:

dexOptions {
  incremental true
}

感性您的阅读,希望这边文章可以对您有所帮助. 如果您有好的建议或者意见请联系我

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

谢绝鈎搭

暂无简介

文章
评论
903 人气
更多

推荐作者

yuanzihao09

文章 0 评论 0

1337793151

文章 0 评论 0

你在我安

文章 0 评论 0

qq_QhAHT0kB

文章 0 评论 0

aaaa123451

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文