分类: android studio2015-06-26 11:54 2374人阅读 评论(2) 收藏 举报

尊重劳动成果,转载请注明出处:http://blog.csdn.net/growth58

你是否感觉到Android Studio构建速度太慢?我也有这感觉。

幸运的是,这有很多可以提高构建速度的技巧。这些技巧目前还在实验并且有可能是不安全的,如果你觉得构建时间太长而且很痛苦的话,尝试一下这些技巧还是很有价值的。我已经按照下面所描述的试过在代码改动很少的情况下构建时间下降了2.5秒。希望对你有帮助。

Android Studio使用Gradle来构建工程。目前Gradle的版本为2.2。最近的版本为2.4,性能比之前的版本有很大的提升。

这有两种方式,一种是手动编辑构建文件,另一种是通过Android Studio改变配置。

对于手动编辑构建文件,在工程的根目录下的build.grade文件末尾添加以下代码:

  1. task wrapper(type: Wrapper) {
  2. gradleVersion = '2.4'
  3. }

打开终端并运行命令:./gradlew wrapper,它将会下载并设置版本2.4的Gradle对于你本地的Gradle wrapper.这是Gradle官方文档中所描述的方法(http://gradle.org/docs/current/userguide/gradle_wrapper.html)。

对于通过Android Studio配置,打开工程结构对话框,选择工程-〉将Gradle版本改为2.4.当你点击确定,Android Studio将自动同步Gradle的配置,并设置wrapper的新版本。

笔记:这个仅仅是当你的工程用的是Gradle wrapper(默认是用Android Studio 生成的工程)。如果不是这种情况,请参考Gradle文档 http://gradle.org.

第二步就是打开工程的构建文件中的 daemon and parallel开关。使用daemon(守护进程)将会使构建启动很快,并且它不会在应用程序每次启动的时候进行完整的构建。使用Parallel将会同时构建多个模块,在工程很大或模块很多的工程使构建速度很快。

在.gradle文件夹下添加一个文件名为gradle.properties的文件,添加如下代码(如:~/.gradle/gradle.properties)。

  1. org.gradle.daemon=true
  2. org.gradle.parallel=true

笔记:Android Studio 已经打开daemon的开关,当从终端进行构建时这个配置将确保daemon的打开。

你也可以在你的工程的根目录下添加这个文件,对于每个人构建应用它将会自动打开,包括你的集成环境(就像Jenkins CI)。当你不使用daemon构建时,从这查看更多信息http://gradle.org/docs/current/userguide/gradle_daemon.html#when_should_i_not_use_the_gradle_daemon.

关于parallel的重要的笔记:配置parallel有可能使一些工程不安全。这要求你的模块必须是解耦的(参考http://gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects)  否则有可能会构建失败。仔细测试你构建的所有variants,你会知道它的所有工作。

你可以添加其它构建参数,比如当你的工程很大时增加堆栈大小,或者指定JVM:

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

对于gradle.properties文件中其它可以配置的选项,参考http://gradle.org/docs/current/userguide/userguide_single.html#sec:gradle_configuration_properties. Android Studio中一些选项是可用的,也有是默认打开的,但在gradle.properties文件中打开这些选项时,当你使用终端构建工程时,这将会确保你的同事也做了同样的配置。

最后是改变incremental dexing的值,这是一个实验的功能并且默认是关闭的。打开这个开关有可能会导致构建失败(尤其是在连续运行的时候),但我还是推荐你尝试一下,看看它是否对你有用。

在主APP模块的build.gradle文件中,添加下面的代码:

  1. dexOptions {
  2. incremental true
  3. }

希望能帮到你,如果你对提高构建执行效率有任何问题或其它技巧请在下面留言。

第一次翻译文章,水平有限还望见谅,如有曲解原文作者的意思,还望不吝指出。

原文地址:https://medium.com/@erikhellman/boosting-the-performance-for-gradle-in-your-android-projects-6d5f9e4580b6

转:Android studio Gradle的更多相关文章

  1. [转]加速Android Studio/Gradle构建

    加速Android Studio/Gradle构建 android android studio gradle   已经使用Android Studio进行开发超过一年,随着项目的增大,依赖库的增多, ...

  2. 解决Android Studio Gradle Build Running慢的问题

    Android Studio方便好用,但是Android Studio Gradle Build Running很慢 解决方法: C:\Users\你的用户名\.gradle 目录下新建一个文件名为 ...

  3. Android studio gradle 打包 那些事

    总结了一下 目前觉得比较好用的gradle 和一些打包 经验.放在这里. 首先说下 渠道号 这个概念,我们经常会统计我们的api 访问来源 是来自于那个app store,这有利于 我们针对性的推广. ...

  4. 解决Android Studio Gradle Build特别慢的问题

    解决Android Studio Gradle Build 特别慢的问题 C:\Users\你的用户名\.gradle目录下新建一个文件名为gradle.properties的文件.内容为:org.g ...

  5. android studio gradle 两种更新方法更新

    android studio gradle 两种更新方法更新 第一种.Android studio更新 第一步:在你所在项目文件夹下:你项目根目录gradlewrappergradle-wrapper ...

  6. android studio gradle 更新方法。

    Android studio更新 第一步:在你所在项目文件夹下:你项目根目录gradlewrapper gradle-wrapper.properties   (只要在打开项目的时候选OK,这个文件就 ...

  7. Android studio gradle配置完整版(转)

    Android studio gradle配置完整版https://my.oschina.net/u/1471093/blog/539075 Android studio 自定义打包apk名 - pe ...

  8. Android Studio gradle编译 NullPointerException(no error message)解决

    原文:Android Studio gradle编译 NullPointerException(no error message)解决 1.关闭Android Studio  2.找到工程目录下的 . ...

  9. [Android] Android studio gradle 插件的版本号和 gradle 的版本号 的对应关系

    [Android] Android studio gradle 插件的版本号和 gradle 的版本号 的对应关系 本博客地址: wukong1688 本文原文地址:https://www.cnblo ...

  10. android studio gradle的坑

    国产模拟器别国外的好用.非常傻瓜.有人推荐夜神. 之前用geom,下载Android都得半天.     每次做开发前,配置环境都要搞半天.尤其是想快速学习一个技术的话,光装环境都让人放弃了.最近想看一 ...

随机推荐

  1. Hibernate Validation注解列表

    下面是主要的验证注解及说明: 注解 适用的数据类型 说明 @AssertFalse Boolean, boolean 验证注解的元素值是false @AssertTrue Boolean, boole ...

  2. 为rm命令增加回收站功能

    rm是个强大的命令,特别是rm -rf有时候强大到让你欲哭无泪,当你想清除当前目录下的所有文件和目录时,很简单 $sudo rm -rf ./* 这没什么,但是,但是如果不小心打成这样 $sudo r ...

  3. Objective-C学习笔记

    . 链接:Objective-C学习笔记 (pdf版) .

  4. 使用idea创建maven的web项目

    如果是第一次打开软件直接点击 Create New Project ,如果之前已经打开过项目了,需要点击菜单中 File → New Project … 如下图: 选择 Maven module ,输 ...

  5. js动态增加表格

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. Hadoop学习笔记(3)——分布式环境搭建

    Hadoop学习笔记(3) ——分布式环境搭建 前面,我们已经在单机上把Hadoop运行起来了,但我们知道Hadoop支持分布式的,而它的优点就是在分布上突出的,所以我们得搭个环境模拟一下. 在这里, ...

  7. javaweb学习总结二十四(servlet经常用到的对象)

    一:ServletConfig对象 1:用来封装数据初始化参数,在服务器web.xml配置文件中可以使用<init-param>标签配置初始化参数. 2:实例演示 web.xml文件中配置 ...

  8. Node.js学习笔记(1)

    Node是用c++语言开发,能运行javascript语言的环境. 使用的时候格式为node helloworld.js,helloword.js为服务器端或者系统级端的javascript代码. N ...

  9. thinkphp,javascript跨域请求解决方案

    javascript跨域请求解决方案 前言 对于很多前端或者做混合开发的同学,我们难免会遇到跨域发起请求业务,比如A站点向B站点请求数据等等.由于最近要做一个站点集群的项目,所以具体业务要求很多个站点 ...

  10. 动态创建DataTable总结

    最简单的: DataTable dt = new DataTable(); dt.Columns.Add("id"); dt.Columns.Add("name" ...