分类: 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. 微软发布屏蔽Win10升级的官方办法

    微软发布屏蔽Win10升级的官方办法 导读 微软似乎从来就没有像现在这么焦燥过,当然了,攸关生死,他要还是能"蛋"定得住,那才真叫怪了.你看,为了推广Windows 10,一向傲娇 ...

  2. 给大家普及一下CPU和SOC的基本知识,好让大家在盲目喝彩做出基本的判断

    转载:http://bbs.tianya.cn/post-worldlook-544367-1.shtml 目前,华为推出了自己的四核手机,用自己的SOC,所以很多不明就里的人开始嚷嚷国产处理器的骄傲 ...

  3. ImageSource使用心得(转)

    很多时候,我们会使用图片来装饰UI,比如作为控件背景等. 而这些图片可以分为两种形式,即存在于本地文件系统中的图片和存在于内存中的图片 对于这两种形式的图片,在WPF中,使用方法不同,下面主要说明针对 ...

  4. XACML-<Target> 元素的结构与相关的评估

    本文由@呆代待殆原创,转载请注明出处. 一.<Target>元素的结构 <Target>元素标识的父元素被用于评估决定请求.<Target>元素即可以做为<P ...

  5. TCP/IP协议原理与应用笔记26:网际协议(IP)之 分片(Fragmentation)

    1. 分片(Fragmentation) 适应在不同的MTU的物理网上传输. 备注: MTU:最大传输单元,Maximum Transmission Unit,它是指一种通信协议的某一层上面所能通过的 ...

  6. 【Shell脚本学习18】Shell for循环

    与其他编程语言类似,Shell支持for循环. for循环一般格式为: for 变量 in 列表 do command1 command2 ... commandN done 列表是一组值(数字.字符 ...

  7. JAVA xml 流方式读取。数据挖掘大文件预处理。

    import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...

  8. jQuery阻止事件冒泡的例子

    下面给给各位朋友稍加整理了一jquery中阻止事件冒泡的一些例子,我们知道JQuery 提供了两种方式来阻止事件冒泡,但我们简单的利用它来做一些应用可能不深入或不理解,下面整理了更详细的方法,有兴趣的 ...

  9. Linux后台运行

    关于linux后台 ctrl + z jobs -l fg %jobnumber 后台调前台 bg %jobnumber 后台暂停--后台运行 kill pid ps -aux | grep &quo ...

  10. bootstrap daterangepicker 添加阴历及节假日

    所有的新增都用 'myAdd start'和'myAdd end'标注,所有的修改都用'myChange start'和'myChange end'标注. 借用了 1900-2100区间内的公历.农历 ...