[关闭]
@coder-pig 2017-05-09T17:54:17.000000Z 字数 2017 阅读 1728

AndroidStudio-Eat-Guide—— 2.Gradle编译优化

AndroidStudio-Eat-Guide

Github地址:https://github.com/coder-pig/AndroidStudio-Eat-Guide


问题描述

上一节中我们了解了Android Studio的优缺点,下载与安装。可能你已经摩拳擦掌
想试试AS这个强大的Android IDE了。然后,你新建了一个项目,接着你视线中会
出现: 这个东西,他会一直在转个不停,而且可能很卡,
可能N多分钟过去了,你还没进入到新建的项目中,然后你就开始
疯狂吐槽了,什么垃圾编译器,新建个项目都要跑这么久,还不如用回Eclipse...

然而AS中的Gradle构建工具表示很无奈,卡顿的主要原因如下:

既然知道了问题,那么接下来从各个方面来优化Gradle构建的速度。


1.硬件优化

标准配置:CPU i5以上,内存 至少8G硬盘 必须固态SSD
附:相同配置的电脑Ubuntu系统上使用AS比Windows流畅一些,亲测~


2.使用国内Maven仓库或自己搭建

上面也说了,Gradle默认会到jcenter下载项目依赖的库,国外下载速度会很慢,
或者根本没网速,如果你没代理的话,这里的话可以公司搭建本地maven仓库,
库都下到这个Maven仓库,项目在添加上这个仓库的地址,当然配置是比较繁琐的。
如果就那么几个人开发的话,没什么太大的必要去搞,可以直接使用阿里提供的
Maven仓库,在项目根目录下的build.gradle中添加仓库地址即可:

  1. maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}


3.使用SS代理

相信经常Google查学习资料的童鞋都有SS这样的代理工具,既然jcenter是国外
的,自然可以通过配置SS来加快下载速度咯。打开AS的Setting,勾选输入下述
内容:

SS开启PAC模式代理即可。


4.开启Gradle离线编译模式

假如你通过上述的套路已经把相应的库下载到本地,你就可以开启离线编译模式了,
如果某个依赖在本地不存在的话,是会编译出错的!直接打开Setting,勾选Offline,
选择本地的.gradle文件夹即可。

也可以命令行走一波:

  1. ./gradlew --offline build

5.调整gradle.properties中的各种配置

前面的话是下载库优化的,接着是gradle配置优化,打开项目根目录的
gradle.properties文件,按需添加下述配置项:

  1. # 分配更大的内存
  2. org.gradle.jvmargs=-Xmx3062m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
  3. # 开启守护进程
  4. org.gradle.daemon=true
  5. # 开启并行编译
  6. org.gradle.parallel=true
  7. # 开启缓存
  8. android.enableBuildCache=true
  9. # 开启孵化模式
  10. org.gradle.configureondemand=true

6.Android Studio配置优化

同样,也可以为AS分配更多的内存,打开AS的安装目录下的bin目录,找到
文件,打开修改下这两个:

比如改成:-Xms512m -Xmx2048m ,然后重启下AS即可。


7.写死依赖库版本

有些小伙伴在build.gradle添加依赖库的时候喜欢写成下面这种版本号,

  1. compile "com.github.bumptech.glide:glide:3.+"

初衷是好的:每次都从仓库中获取最新的库,自动升级,但是也意味着
如果新版接口改了会导致编译失败的问题,而且Gradle回去仓库中试图
拉取最新版本,网络不好时,也会拖慢Gradle的构建速度,所以还是建
议写死依赖库的版本号。例如:

  1. compile "com.github.bumptech.glide:glide:3.7.0"

9.直接在git bash命令行编译项目

这点不算优化,只是个人偏好的一种方式,比如你在gayhub上clone了
一个Demo,如果你直接用AS打开的话,那么你有N多分钟不用做事了,
就卡在编译界面那里,我们可以直接在命令行进行编译,进入项目
目录右键,git bash,键入下述指令进行编译:

  1. ./gradlew build

Gradle在干什么,一目了然~


暂时想到的就这些,如果后面get了什么新姿势再来补充吧,如果你知道
更多Gradle优化的技巧欢迎告知,万分感激~


参考文献

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注