已经使用Android Studio进行开发超过一年,随着项目的增大,依赖库的增多,构建速度越来越慢,现在最慢要6分钟才能build一个release的安装包,在网上查找资料,发现可以通过一些配置可以加快速度,这里跟大家分享一下。

开启gradle单独的守护进程

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

  • /home/<username>/.gradle/ (Linux)
  • /Users/<username>/.gradle/ (Mac)
  • C:\Users\<username>\.gradle (Windows)

并在文件中增加:

1
org.gradle.daemon=true

同时修改项目下的gradle.properties文件也可以优化:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 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.properties文件里,那样就不是针对一个项目生效,而是针对所有项目生效。

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

修改android studio配置

在android studio的配置中,开启offline模式,以及修改配置。实际上的配置和上面的一大段一样,主要是在这个地方配置的只会在ide构建的时候生效,命令行构建不会生效。

命令行构建

基于上面的配置,命令行构建时在命令后面加上这个参数即可 --daemon --parallel --offline

引入依赖库时使用aar

使用网上第三方的依赖库时尽量使用aar,可以在mavenhttp://gradleplease.appspot.com/或者githuhttps://github.com/Goddchen/mvn-repo搜索。

自己的库模块也可以打包成aar,关于这个可以参考stormzhang的文章http://www.stormzhang.com/android/2015/03/01/android-reference-local-aar/

后记

经过这样一番折腾,我原来需要4,5分钟才能构建完成的项目,现在只需要30秒左右就可以构建完成了。当然了,如果你这样还是不可以的话,那么,你应该换电脑了,ssd的硬盘,更大的内存,必须的上了。

另外

修改idea.xxx.vmoptions/studio.xxx.vmoptions 文件,它在你的idea/android studio 安装目录下的bin 文件夹中
&amp;amp;lt;img src="https://pic1.zhimg.com/cf19ab821dbfa741acdab940e165bc30_b.jpg" data-rawwidth="570" data-rawheight="366" class="origin_image zh-lightbox-thumb" width="570" data-original="https://pic1.zhimg.com/cf19ab821dbfa741acdab940e165bc30_r.jpg"&amp;amp;gt;

我的值
-Xms512m
-Xmx2048m
-XX:MaxPermSize=768m
-XX:ReservedCodeCacheSize=768m
-XX:+UseCompressedOops

 

Android stuido作为google主推的IDE,配合gradle编译,有很多的优点和便捷性。唯一使用过程中不舒服的地方就是莫名其妙的卡顿,经常在coding的时候卡死,非常无语,不知道是不是我的机器也比较烂,总之IDE优化还需要google加油。以及非常慢的编译速度。尝试了很多优化方案,将我的发现和大家分享一下。

以PC 端为例,MAC大同小异

1.申请大内存

installation path\studio64.exe.vmoptions or studio.exe.vmoptions

使用文本编辑器打开,找到起始两行,如下

-Xms128m
-Xmx750m

修改最小值和最大值,建议为

-Xms256m
-Xmx2048m

2 优化编译

a:

file->setting->compile

勾选除第二项之外的其他选项,并在VM options里填入:

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

b:

C:\Users\yourname\.gradle

用文本编辑器打开gradle.properties,编辑内容如下:

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

经过测试,编译速度有很大提升,比较大的项目从之前的5-8分钟可以减少到1-2分钟。

一、将用不到的插件全部禁用掉,方法如下:

启动你的 Android Studio,然后选择菜单 File -> Settings... 以打开配置界面,然后在左侧 IDE Settings 栏位里找到 Plugins 配置项,

此时右侧出现相应的插件选项,把用不到的选项勾选去掉即可,例如:CVS Integration、Git Integration、GitHub、Google Cloud Tools

For Android Studio、Google Login、Python、Subversion Integration、TestNG-J 等。勾选好后单击右下方的 Apply 按钮以便使你的配置

生效,最后按提示重启 Android Studio 即可。(这样配置后,你的 Studio 速度至少成倍提升!!)

二、为 Gradle 提速,方法就是让 Gradle 使用 daemon(守护进程)方式进行 build(构建)项目,方法如下:

1、创建一个名为 gradle.properties 的文件到以下目录:

· Windows 7 系统---C:\Users\<username>\.gradle\

· Linux 系统---/home/<username>/.gradle/

· Mac 系统---/Users/<username>/.gradle/

然后在该文件中加入一行配置项如下:

org.gradle.daemon=true

2、让 Gradle 不要老是访问网络,而改用离线方式进行构建,方法如下:

启动你的 Android Studio,然后选择菜单 File -> Settings... 以打开配置界面,然后在左侧 Project Settings [your_project_name] 栏

位里找到 Gradle 配置项,此时右侧出现相应的选项,再找到 Global Gradle settings 下方的 Offline work 选项,把勾选去掉即可。勾选

好后单击右下方的 Apply 按钮以便使你的配置生效,最后按提示重启 Android Studio 即可。(这样配置后,再次构建项目时,速度至少成

倍提升!!)

加速Android Studio/Gradle构建的更多相关文章

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

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

  2. 优化Android Studio/Gradle构建

     使用Android Studio进行开,随着项目的增大,依赖库的增多,构建速度越来越慢,现在最慢要6分钟才能build一个release的安装包,在网上查找资料,发现可以通过一些配置可以加快速度,这 ...

  3. Android Studio Gradle构建脚本

    Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的内部领域特定(DSL)语言. 构建工具就是对你的项目进行 ...

  4. 优化Android Studio/Gradle构建(转)

    参考:http://hm.itheima.com/thread-204217-1-1.html

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

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

  6. Android studio gradle 打包 那些事

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

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

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

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

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

  9. android studio gradle 更新方法。

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

随机推荐

  1. MongoDB中ObjectId的误区,以及引起的一系列问题

    近期对两个应用进行改造,在上线过程中出现一系列问题(其中一部分是由于ObjectId误区导致的) 先来了解下ObjectId: TimeStamp 前 4位是一个unix的时间戳,是一个int类别,我 ...

  2. Embedding Documents in Word 2007 by Using the Open XML SDK 2.0 for Microsoft Office

    Download the sample code This visual how-to article presents a solution that creates a Word 2007 doc ...

  3. Word对象模型 (.Net Perspective)

    本文主要针对在Visual Studio中使用C# 开发关于Word的应用程序 来源:Understandingthe Word Object Model from a .NET Developer' ...

  4. 让ASP.NET MVC页面返回不同类型的内容

    在ASP.NET MVC的controller中大部分方法返回的都是ActionResult,更确切的是ViewResult.它返回了一个View,一般情况下是一个HTML页面.但是在某些情况下我们可 ...

  5. Java之 AtomicInteger

    AtomicInteger,一个提供原子操作的Integer的类.在Java语言中,++i和i++操作并不是线程安全的,在使用的时候,不可避免的会用到synchronized关键字.而AtomicIn ...

  6. 可在Azure上运行.NET的SDK

    本节包含前几个版本的 for .NET 的发行说明.有关早期版本的详细信息,请参阅早期版本:Azure SDK for .NET.有关 SDK 支持和停用的信息,请参阅 Azure SDK for . ...

  7. 输入A和B,计算并输出A+B

    EOF是一个预定义的常量,等于-1. 输入A和B,计算并输出A+B Sample input: 1    5 10  20 Sample output: 6 30 #include <iostr ...

  8. 【解决】UEFI+GPT模式下装系统(WIN7/WIN8)

    最近在家想把联想超极本重装系统,可是发现想简单了,预装WIN8的本本用的是UEFI+GPT模式,以前老毛桃装系统那一套不好用了,所以百度了一些方案,还没试,先记着. 1. WIN8 先说装WIN8,貌 ...

  9. Hadoop新手学习线路指导

    对于我们新手入门学习hadoop大数据存储的朋友来说,首先了解一下云计算和云计算技术是有必要的.下面先是介绍云计算和云计算技术的:              云计算,是一种基于互联网的计算方式,通过这 ...

  10. NULL指针 Void* 和野指针

    在C和C++的语言中常常有这几个概念: NULL指针.空指针.Void *指针.野指针(Wild Pointer)甚至垂悬指针(Dangling Pointer). 1.NULL指针,一般用于指向一个 ...