用Android Studio3.0新功能加快构建速度

Android Studio3.0很多新的功能,他们可以直接加快Android Studio的构建速度从而加快开发效率,构建速度直接影响到开发效率,浪费时间即浪费生命,可以通过修改一些配置,优化下构建速度。

Android Studio3.0之前的做法

通过配置DEX 资源缩短构建时间

gradle 添加以下代码

android {
 ...
 dexOptions {
  maxProcessCount 4 // this is the default value
  javaMaxHeapSize "2g"
 }
}

maxProcessCount

设置可以并行启动的 DEX 进程的最大数量

javaMaxHeapSize 设置 dex 操作的最大内存分配池大小
根据自己电脑的配置,设置这两个值,通常情况下这两个值越大越好

启用 dexing-in-process 和增量 Java 编译

Android Plugin for Gradle 版本 2.1.0 及更高版本还引入了其他的构建流程改进,包括增量 Java 编译和 dexing-in-process。增量 Java 编译默认情况下处于启用状态,这种编译方式仅对发生变化或需要重新编译的源代码部分进行重新编译,可以缩短开发过程中的编译时间。

dexing-in-process 在构建流程而不是单独的外部 VM 流程中执行 dexing。这样不仅可以让增量构建更快,也可以显著提高完整构建的速度。要启用此功能,您需要将 Gradle 后台进程的最大堆大小设置为至少 2048 MB。要进行设置,您可以将以下代码包含到项目的 gradle.properties 文件中

org.gradle.jvmargs = -Xmx2048m

如果您已经在模块级别的 build.gradle 文件中为 javaMaxHeapSize 定义值,则需要将后台进程的最大堆大小设置为 javaMaxHeapSize 的值 + 1024 MB。例如,如果您已将 javaMaxHeapSize 设为“2g”,则需要将以下代码添加到项目的 gradle.properties 文件中:

org.gradle.jvmargs = -Xmx3072m

3.0之后的做法

使用用D8 编译器作为DEX 编译器

Android Studio3.0 包含了一个新的可选择DEX编译器,叫做D8,不久它将替换掉旧的DX编译器,现在可以选择使用新的编译器,DEX编译直接影响到app的构建时间,dex文件大小,和运行时的性能,当使用新的D8编译器,D8编译更快和输出更小的.dex文件,并且相同或者更好的app运行时性能。要想使用D8编译器,把以下代码添加到工程的gradle.properties 文件即可

android.enableD8=true

使用新的依赖方式

也就是指dependencies代码块的引用

dependencies{
  compile project('xxx')
  compile 'com.github.bumptech.glide:glide:3.7.0'
}

Android gradle 3.0 插件有4种引入方式
* implementation 相当于原来的compile
* api 相当于原来的compile
* compileOnly 相当于原来的provided
* runtimeOnly 相当于原来的apk

一般来说实际中主要用到的是compile
为了提高构建速度
替换成

implementation project('xxx')
implementation 'com.github.bumptech.glide:glide:3.7.0'
api project('xxx')
api 'com.github.bumptech.glide:glide:3.7.0'

那这两者有什么区别呢

此时需要注意的一个地方,例如一个叫A的lib里面用implementation引用一个B库,又有一个C的module(不管是lib还是app)引用了A,这个C的module是引用了不了B的,也就是不能使用B库里面的类和方法。这也是为什么使用implemention会加快构建速度的原因,可以减少重复编译。要想引用B到的库,可以使用api。在3.0中,api用法可以完全可以替换之前的compile,不用担心编译问题。

简单总结下:

implementation:C引用A,即使A库implementation方式引用B,C也不会引用B

api :C引用A,并且A库用api方式引用B,C会引用B

compileOnly 只依赖库用来编译,不会把库打包进apk,在一些特定的场景很有用

runtimeOnly 不用来编译,但是会打包到apk,这个方式是deprecated(不推荐使用)的

参考

配置构建

Migrate to Android Plugin for Gradle 3.0.0

(0)

相关推荐

  • Android Studio3.0新特性及安装图文教程

    Android Studio是Android的官方IDE.它是专为Android而打造,可以加快您的开发速度,帮助您为每款Android设备构建最优应用. 它提供专为Android开发者量身定制的工具,其中包括丰富的代码编辑.调试.测试和性能分析工具. 一.Android Studio3.0新特性 (1).核心IDE更改 我们将基础IDE从IntelliJ 2016.2升级到2017.1.2,在2016.3和 2017.1中增加了许多新功能, 包括参数提示,语义突出显示,搜索中的即时结果等等.

  • 详解Androidstudio3.0 关于Gradle报错的问题(小结)

    前言 升级Android Studio to 3.0 canary 1版本后,之前一个正常的Project,一直报错,报错内容如下 Error:Failed to complete Gradle execution. Cause: The version of Gradle you are using (3.3) does not support the forTasks() method on BuildActionExecuter. Support for this is available

  • 详解升级Android Studio3.0时遇到的几个问题

    今天收到了Android Studio3.0更新推送,在升级过程中遇到几个问题,在这里把问题和解决方法记录下,方便要升级的童鞋.如果还有童鞋遇到不同的问题,也可以评论下我做下记录 1.gradle打包,自定义apk名称代码报错(Cannot set the value of read-only property 'outputFile' ) 报错 Error:(56, 0) Cannot set the value of read-only property 'outputFile' for

  • 浅谈Android Studio3.0更新之路(遇坑必入)

    序言:作为这个世界上走在最前沿的生物"猿",怎么能对新事物一无所知呢,10月26日,随着Android 8.1 Oreo的预览版发布,Android Studio3.0正式版也发布了,作为Android开发的猿们我们应该早就知道谷歌在今年5月的开发者大会上就说了要支持Kotlin语言,所以这次更新一个比较大的点就在于支持Kotlin语言了,下面就跟着LZ的脚步来探索一下AS3.0吧 相信很多人很早就体验过谷歌爸爸放出来的体验版本了,虽然说正式版已经出了,但是很多人也不敢轻易贸然的更新,

  • 用Android Studio3.0新功能加快构建速度

    Android Studio3.0很多新的功能,他们可以直接加快Android Studio的构建速度从而加快开发效率,构建速度直接影响到开发效率,浪费时间即浪费生命,可以通过修改一些配置,优化下构建速度. Android Studio3.0之前的做法 通过配置DEX 资源缩短构建时间 gradle 添加以下代码 android { ... dexOptions { maxProcessCount 4 // this is the default value javaMaxHeapSize "2

  • Android Studio 3.0 新功能全面解析和旧项目适配问题

    简介: Android Studio是Android的官方IDE.它是专为Android而打造,可以加快您的开发速度,帮助您为每款Android设备构建最优应用. 它提供专为Android开发者量身定制的工具,其中包括丰富的代码编辑.调试.测试和性能分析工具. 上周四,Google 终于在经历大半年的打磨锤炼之后正式发布 Android Studio 3.0 版本,给广大安卓开发人员一份满意的答卷.如往常一样,每次新版开发工具的发布,很多谨慎点的朋友仍担心稳定性.是否存在坑等问题,选择隔岸观火,

  • Android Studio 4.0 新功能中的Live Layout Inspector详解

    最近 Android Studio 4.0 稳定版本正式发布,其中一个重要升级就是新版的Layout Inspector 旧版的Layout Inspector 4.0 之前我们通过Tools -> Android -> Layout Inspector 可以对当前进程现实中画面进行分析,获取视图的Hierarchy以及Property信息 Live Layout Inspector 4.0 通过同样的菜单可以打开新版的 Layout Inspector 运行APP后,选择当前进程,可以看到当

  • Android Studio3.0.1填坑笔记

    从前听大神同事强老师说IntelliJ IDEA 功能强大,是Jet Brains 公司开发商业IDE(集成开发环境),同时支持Java, Scala 和Groovy.商业IDE即IntelliJ 是一款收费的IDE,当然了其实也有免费的社区版本,但是很多功能都被阉割了.IntelliJ 除了支持Android项目开发,还可以搭建java web 开发环境,功能比AS更强大. 阿拉最近重装了电脑,想着干脆也装个IntelliJ 吧,但是另一个同事说Intellij与AS会冲突.一开始我觉得是他太

  • Android Studio3.6新特性之视图绑定ViewBinding使用指南

    View Binding是一项功能,使您可以更轻松地编写与视图交互的代码.在模块中启用视图绑定后,它将为该模块中存在的每个XML布局文件生成一个绑定类.绑定类的实例包含对在相应布局中具有ID的所有视图的直接引用. 正文 Android Studio 3.6 Canary 11 及更高版本中推出了ViewBinding功能,ViewBinding将逐步替换掉findViewById,还等什么,抓紧时间学习吧! 谷歌官方文档的ViewBinding Demo是用Kotlin语言写的,看起来比较生疏,

  • 浅谈Android Studio3.6 更新功能

    前言 下载google CodeLab的程序时,提示要更新3.6版本才能运行程序,于是更新了一下,看看有什么新功能. 界面设计工具 这次更新了一些设计工具,比如Layout Editor 和 Resource Manager. 现在,在XML或设计工具的颜色选择器中,Android Studio会在您的应用程序中填充颜色资源,以便您快速选择和替换颜色资源值. 拆分视图并放大设计编辑器 设计编辑器(例如,布局编辑器和导航编辑器)现在提供一个拆分视图,使您可以同时查看UI的"设计"视图和&

  • Android Studio3.0升级后使用注意事项及解决方法

    Gradle plugin最高版本4.* 老的项目在使用新版本时,可能会出现gradle plugin冲突的问题 Error:Failed to open zip file. Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.) Re-download dependencies and sync project (requires network)

随机推荐