文档章节

Android Studio中如何提升Gradle Building的速度?

 天使爱美
发布于 2016/11/11 22:29
字数 1124
阅读 18
收藏 0

比起两三年前,现在开发Android应用已经可以很顺手了,无论是IDE还是开发框架、第三方库,都比较成熟了。但是呢,使用Android Studio开发时,免不了在调试时,看着gradle building一直在Loading,对于一般的项目也是需要一杯咖啡的时间了,特别是只想测下一丁点的小问题时,也要等这么长时间,实在是没有耐心。那么,经过一轮的Google与实践探索,终于得一大法,仿佛张无忌在昆仑洞下练成了九阳真经。

  得此大法,可解决Android Studio Gradle building慢的问题了!将原来的编译时间从五到十分钟提升到30秒左右!

  提速一:本地化引用第三方aar或jar包

  在开发时,一般会引用到第三方库,例如,在项目中引用了 fabprogresscircle库,那么一般在项目的app目录下的 build.gradle 文件里会有这么一条记录:

  compile 'com.github.jorgecastilloprz:fabprogresscircle:1.01@aar'

  Gradle在第一次Building时,会将引用的第三方库包下载到缓存里。下载到缓存里的文件应该是 fabprogresscircle-1.01.aar 。注意:如果build.gradle引用时没有 @aar 的话,那一般下载到缓存里的是 .jar 文件。如果不知道gradle的缓存目录在哪里,可以在Android Studio编译过一次之后,使用搜索 fabprogresscircle-1.01.aar的方法找到目录。

  把缓存里的 aar 或者是 jar 包复制到项目的 libs 目录里,然后编辑项目的app目录下的 build.gradle 文件,将引用的包改为引用本地的包。

  在 build.gradle 文件里先增加内容:

  repositories {

  flatDir {

  dirs 'libs'

  }

  }

  上面写的内容意思是告诉Gradle本地引用的包仓库在 libs 目录,然后把

  compile 'com.github.jorgecastilloprz:fabprogresscircle:1.01@aar'

  改为下面的:

  compile(name: 'fabprogresscircle-1.01', ext: 'aar')

  注意

  aar与jar包是不同的。

  如果一开始引用时,没有 @aar ,如下:

  compile 'com.github.jorgecastilloprz:fabprogresscircle:1.01'

  那下载到缓存的是 fabprogresscircle-1.01.jar 文件,由于在 build.gradle 文件里,在 dependencies 下第一条内容就是:

  compile fileTree(include: ['*.jar'], dir: 'libs')

  上面内容意思是引用本地目录libs下的所有以 jar 为后缀的包。所以,将 fabprogresscircle-1.01.jar 文件复制到libs目录后,可以直接删除下面这么条内容:

  compile 'com.github.jorgecastilloprz:fabprogresscircle:1.01'

  注意

  使用此方法,不能将Android本身相关包本地化引用,例如遇到以下的引用就不可以使用此方法了,不然会出错:

  compile 'com.android.support:appcompat-v7:23.0.1'

  一般以 com.google.android 和 com.android.support 开头的相关包都不能使用此方法。

  提速二:优化Android Studio的设置

  在Android Studio软件里,点击"Files" -> "settings",打开设置对话框,在左边导航里点击"Build, Execution, Deployment" -> "Gradle",在右边,在 offline work 前打勾。这样子,Gradle就是离线模式,避免了Gradle Building时联网超时的问题。但是如果项目是第一次同步或编译,则不能应用此设置。

  另外,编译设置也要作同样的优化,如下图:

 

    Android Studio 设置

  提速三:开启gradle单独的守护进程

  在下面的目录下面创建gradle.properties文件:

  . /home//.gradle/ (Linux)

  . /Users//.gradle/ (Mac)

  . C:\\Users\\.gradle (Windows)

  复制以下内容到gradle.properties里:

  # Project-wide Gradle settings.

# IDE (e.g. Android Studio) users:

# Settings specified in this file will override any Gradle settings

# configured through the IDE.

# For more details on how to configure your build environment visit

http://www.gradle.org/docs/current/userguide/build_environment.html

# The Gradle daemon aims to improve the startup and execution time of Gradle.

# When set to true the Gradle daemon is to run the build.

# TODO: disable daemon on CI, since builds should be clean and reliable on servers

org.gradle.daemon=true

# Specifies the JVM arguments used for the daemon process.

# The setting is particularly useful for tweaking memory settings.

# Default value: -Xmx10248m -XX:MaxPermSize=256m

org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

# When configured, Gradle will run in incubating parallel mode.

# This option should only be used with decoupled projects. More details, visit

# http://www.gradle.org/docs/current/userguide/multi_project_builds.html

#sec:decoupled_projects

org.gradle.parallel=true

# Enables new incubating mode that makes Gradle selective when configuring projects.

# Only relevant projects are configured which results in faster builds for large multi-projects.

http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:configuration_on_demand

org.gradle.configureondemand=true

  上面的配置文件主要就是做,增大gradle运行的java虚拟机的大小,让gradle在编译的时候使用独立进程,让gradle可以平行的运行。

  将以上内容复制到gradle.properties文件里后,就是对Gradle全局应用,对所有项目都有效的。如果只想在某一项目应用此设定,可以在项目下的gradle.properties里增加以上设定内容。

 

文章来源:简书

© 著作权归作者所有

共有 人打赏支持
粉丝 1
博文 36
码字总数 59694
作品 0
朝阳
私信 提问
如何优化 Android Studio 启动、编译和运行速度?

作为一名 Android 程序员,选择一个好的 IDE 工具可以使开发变得非常高效,很多程序员喜欢使用 Google 的 Android Studio来进行开发,但使用起来有时会出现卡顿等问题。本文介绍了几种优化 ...

OneAPM蓝海讯通
2015/11/25
22.4K
3
给 Android 开发者的 Gradle 入门指南

本文的目的是为您提供关于 Gradle 的高级概述,以及在开发 Android 应用程序时如何适应整个构建系统。 我将通过 Gradle 和 Gradle 的 Android 插件的基础知识,以及新的 Android 项目附带的默...

oschina
2017/11/22
3K
2
Android Studio 使用资料汇总

1.加快Android Studio的编译速度(http://www.jianshu.com/p/c27ae1019225) 2.如何优化 Android Studio 启动、编译和运行速度?(http://www.oschina.net/question/2365986_2142890) 3.freelin......

IT追寻者
2016/11/15
0
0
什么是design-24.1.0.aar?新建Android Studio Project,选用Login Activity时,build出错

问题描述: 在Android Studio中新建了一个Project,到“Add an activity to mobile”时,选择了"Login Activity”,Studio在进行Gradle building时出错,如下图所示: 请问为什么会出现这种问...

CYG充电迷
2016/08/27
213
1
Android Studio系列教程一--下载与安装

转自:http://stormzhang.com/devtools/2014/11/25/android-studio-tutorial1/ 背景 相信大家对Android Studio已经不陌生了,Android Studio是Google于2013 I/O大会针对Android开发推出的新的......

farina
2016/05/23
230
0

没有更多内容

加载失败,请刷新页面

加载更多

IDE 插件新版本发布,开发效率 “biu” 起来了

近日,Cloud Toolkit正式推出了面向 IntelliJ 和 Eclipse 两个平台的新款插件,本文挑选了其中三个重大特性进行解读,点击文末官网跳转链接,可查看详细的版本说明。 本地应用一键部署到任何...

阿里云官方博客
23分钟前
1
0
我是怎样和Linux系统结缘并通过红帽RHCE认证的

我高考完当时就是选择的计算机科学与技术专业,上大学以后联想到的和计算机相关的就只有写代码,开发,网站,网页设计,就没有其他的了,当时学习写代码也都是在Windows上,什么C#、C++之类的...

linuxprobe16
24分钟前
0
0
Coding and Paper Letter(四十四)

资源整理。 1 Coding: 1.Rstudio2019年会“机器学习应用”的幻灯片,代码和数据 rstudio conf 2019 2.R语言包sparkxgb,Spark上XGBoost的R接口。 sparkxgb 3.自动SQL注入和数据库接管工具。 ...

胖胖雕
56分钟前
3
0
Ubuntu最新的主要操作系统放弃32位支持?

现在是2018年,2019年即将到来——64位处理器已经成为主流很长一段时间了。如果你仍然使用32位的电脑,那么是时候把它扔进垃圾箱了。 我为所有基于Linux的操作系统维护者感到自豪,他们有勇气...

Linux就该这么学
57分钟前
2
0
Fundebug发布Vue插件,简化BUG监控接入代码

摘要: 代码越短越好! 我们发布了fundebug-vue插件,可以简化Vue框架接入Fundebug的代码。 Vue如何接入Fundebug 1. 安装fundebug-javascript与fundebug-vue npm install fundebug-javascrip...

Fundebug
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部