文档章节

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

 天使爱美
发布于 2016/11/11 22:29
字数 1124
阅读 12
收藏 0
点赞 0
评论 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里增加以上设定内容。

 

文章来源:简书

© 著作权归作者所有

共有 人打赏支持
粉丝 0
博文 28
码字总数 53872
作品 0
朝阳
史上最详细的Android Studio系列教程一--下载和安装

背景 相信大家对Android Studio已经不陌生了,Android Studio是Google于2013 I/O大会针对Android开发推出的新的开发工具,目前很多开源项目都已经在采用,Google的更新速度也很快,明显能感觉...

让代码飞一会
2015/07/05
0
0
AndroidStudio gradle安装配置详解-透过现象看本质

背景 相信很多人第一次安装androidstudio跑工程时候,会遇到一个问题:android sutdio第一次打开一个工程巨慢怎么办? 或者是gradle project sync filded错误 有没有想过androidstudio是如何...

u010321471
05/27
0
0
Windows环境下Android Studio系列1—下载与安装

参考资料 [1] Windows环境下Android Studio v1.0安装教程, http://ask.android-studio.org/?/article/9 [2] stormZhang的Android Studio系列教程一--下载与安装, http://stormzhang.com/dev......

一配
2015/06/16
0
0
ubuntu12.04 安装Android Studio笔记

Ubuntu安装Android Studio 说明 安装教程参考stormzhang的博客 所有的软件在这里(已经备份到自己的pan) 注:此笔记在gitbook下完成,扔到osc上看看对markdown的支持如何?(结果是gitbook太...

cyper
2015/01/30
0
16
读书笔记--Android Gradle权威指南(上)

最近看了一本书《Android Gradle 权威指南》,对于 Gradle 理解又更深了,但不想过段时间就又忘光了,所以打算写一篇读书笔记,将书中一些我个人觉得蛮有用的点记录、总结一下。 前言 首先,...

请叫我大苏
05/24
0
0
Gradle/Studio构建问题(Ant/Gradle)

> 使用Gradle遇到的问题及其他: Android Studio安装过程常见问题图解-- http://jingyan.baidu.com/article/fd8044fad5bdca5031137ab7.html 1. 将GitHub上的新项目导入Studio中 Pano360-mast......

shareus
05/11
0
0
com.android.tools.build:gradle:X.XX.XX:gradle.jar

在使用Android Studio 这个IDE时,出现com.android.tools.build:gradle:X.XX.XX:gradle.jar 插件无法下载问题 可能的原因就是网速不好或者依赖仓库的下载网址被墙了,可以配置代理试试。比如...

artshell
2014/09/28
0
5
Android Gradle和Gradle插件区别

一、引言 1、什么是Gradle?什么是Gradle插件? build.gradle中依赖的classpath 'com.android.tools.build:gradle:2.1.2'和gradle-wrapper.properties中的distributionUrl=https://services.gr......

AwesomeQA
2017/10/22
0
0
Android studio 使用心得(十)---android studio 多渠道打包(三)

关于使用android studio 如何打包 大家可以看这两篇文章 Android studio 使用心得(四)---android studio 多渠道打包 Android studio 使用心得(四)---android studio 多渠道打包(二) 真正的项...

veidy
2015/07/28
0
0
android导入eclipse项目后,出现如下问题

230.android导入eclipse项目后,出现如下问题 1.Error:The project is using an unsupported version of the Android Gradle plug-in (0.12.2). The recommended version is 1.2.3. classpat......

chuxuezhe_
2015/10/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

pbgo: 基于Protobuf的迷你RPC/REST框架

https://www.oschina.net/p/pbgo

chai2010
30分钟前
0
0
rsync工具介绍、常用选项以及通过ssh同步

linux下的文件同步工具 rsync rsync是非常实用的一个同步工具,可以从a机器到b机器传输一个文件,也可以备份数据,系统默认没有这个工具,要使用命令 yum install -y rsync 安装。 rsync的命...

黄昏残影
46分钟前
0
0
OSChina 周四乱弹 —— 表妹要嫁人 舅妈叮嘱……

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @哈哈哈哈哈嗝:一定要听——The Pancakes的单曲《咁咁咁》 《咁咁咁》- The Pancakes 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :...

小小编辑
今天
194
4
流利阅读笔记30-20180719待学习

重磅:让人类得老年痴呆的竟是它? Lala 2018-07-19 1.今日导读 去年奥斯卡最佳动画长片《寻梦环游记》里有一句经典台词:“比死亡更可怕的,是遗忘”。在电影中,年迈的曾祖母会重复说一样的...

aibinxiao
今天
3
0
1.16 Linux机器相互登录

Linux机器之间以密码方式互相登录 运行命令#ssh [ip address],标准命令:#ssh [username]@ip, 如果没有写用户名,则默认为系统当前登录的用户 命令#w查看系统负载,可查看到连接到该主机的...

小丑鱼00
今天
0
0
about git flow

  昨天元芳做了git分支管理规范的分享,为了拓展大家关于git分支的认知,这里我特意再分享这两个关于git flow的链接,大家可以看一下。 Git 工作流程 Git分支管理策略   git flow本质上是...

qwfys
今天
2
0
Linux系统日志文件

/var/log/messages linux系统总日志 /etc/logrotate.conf 日志切割配置文件 参考https://my.oschina.net/u/2000675/blog/908189 dmesg命令 dmesg’命令显示linux内核的环形缓冲区信息,我们可...

chencheng-linux
今天
1
0
MacOS下给树莓派安装Raspbian系统

下载镜像 前往 树莓派官网 下载镜像。 点击 最新版Raspbian 下载最新版镜像。 下载后请,通过 访达 双击解压,或通过 unzip 命令解压。 检查下载的文件 ls -lh -rw-r--r-- 1 dingdayu s...

dingdayu
今天
1
0
spring boot使用通用mapper(tk.mapper) ,id自增和回显等问题

最近项目使用到tk.mapper设置id自增,数据库是mysql。在使用通用mapper主键生成过程中有一些问题,在总结一下。 1、UUID生成方式-字符串主键 在主键上增加注解 @Id @GeneratedValue...

北岩
今天
2
0
告警系统邮件引擎、运行告警系统

告警系统邮件引擎 cd mail vim mail.py #!/usr/bin/env python#-*- coding: UTF-8 -*-import os,sysreload(sys)sys.setdefaultencoding('utf8')import getoptimport smtplibfr......

Zhouliang6
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部