这是我参与更文挑战的第25天,活动详情查看: 更文挑战
构建速度衡量标准
其他gradle.properties配置
除了配置给gradle分配的内存外,还可以通过添加下述配置使得构建加快:
#开启守护线程
org.gradle.daemon=true
#开启并行编译任务
org.gradle.parallel=true
#启用新的孵化模式
org.gradle.configureondemand=true
#开启 Gradle 缓存
#gradle3.5版本之后,推出了新的cache机制,和Android studio2.3版本引入的BuildCache不一样,
#这个新的cache机制会缓存每个任务的输出,而build cache只会pre-dexed的外部库。
org.gradle.caching = true
#使用构建缓存加快整洁构建的速度
# https://developer.android.com/studio/build/build-cache.html
android.enableBuildCache=true
复制代码
另外,你还可以在下述目录中创建一个gradle.properties文件,全局生效,就不用每个项目都另外配置了
- /home//.gradle/ (Linux)
- /Users//.gradle/ (Mac)
- C:\Users.gradle (Windows)
配置依赖包下载地址
就是使用阿国内阿里云的依赖下载地址替换Google依赖包下载地址,打开Project级别的build.gradle文件,添加阿里云的地址
repositories {
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' }
...
}
allprojects {
repositories {
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' }
...
}
}
复制代码
升级Android Gradle Plugin 至3.0.0/3.3.0以上
每次 Android Gradle 插件的更新都会修复大量的 bug 及提升性能等新特性,因此保持最新的 Android Gradle 插件版本有非常大的必要。
因此有更高的稳定版本,我们应该是本着是能上则上的原则。
eg:
- AndroidStudio3.0以后,能使用implementation依赖。
- AndroidStudio3.0里有D8 dex编译引擎,而这一引擎将在AndroidStudio 3.1里成为默认的引擎。
- Adroid Studio 3.3 中可以使用R8的下一代代码
shrinker
。它将减少无用的代码和资源,并缩小您的源代码。因此 Android Studio 声称构建时间和 APK 大小会更小。 - Android Studio 3.5 版开始,可以使用 Apply Changes 功能来提高构建性能。
- …
使用新的依赖和配置
| 新的配置
New Configuration | 弃用配置 Deprecated configuration | 行为 Behavior |
---|---|---|
implementation 执行 | compile 编译 | 当你的模块配置一个implementation 依赖项时,让Gradle知道这个模块在编译的时候不需要把依赖项泄露给其他模块。也就是说,只有在运行时,依赖才可用于其他模块。使用这种依赖配置代替 api或compile可以导致显着的构建时间改进,因为它减少了构建系统需要重新编译的项目的数量。例如,如果一个 implementation依赖关系改变了它的API,Gradle只重新编译这个依赖项以及直接依赖它的模块。大多数应用程序和测试模块应使用此配置。 |
api 美国石油学会 | compile 编译 | 当一个模块包含api依赖关系时,让Gradle知道模块想要将该依赖关系可传递地导出到其他模块,以便在运行时和编译时使用它们。这个配置的行为就像compile(现在已经被弃用了),你通常应该只在库模块中使用它。这是因为,如果api依赖项更改了外部API,Gradle会在编译时重新编译所有有权访问该依赖项的模块。所以,拥有大量的api依赖会增加构建时间。除非你想将一个依赖的API暴露给一个单独的测试模块,否则使用implementation 依赖。 |
也就是说在AndroidStudio3.0以后,能使用implementation的就使用implementation,implementation可以提高编译速度
开启D8编译
相比之前的DX编译引擎,谷歌的下一代编译引擎D8 dex编译引擎不仅仅提高了编译效率(体现在编译时间减少上),同时也减少了生成的.dex文件的大小。目前D8 dex编译引擎已经在android studio 3.0 里有,而这一引擎将在android studio 3.1里成为默认的引擎。可以在gradle.properties 文件里的android.enableD8设置成true即可使用D8 dex编译引擎。
使用 Java 8 语言特性会导致需要执行去语法糖操作,这将影响构建时间。然而,我们已经用 D8 降低了去语法糖操作的影响。
android.enableD8 = true
复制代码
离线编译
新版AS中设置已经去掉了,在下图的地方配置打开AS的Gradle的offline work选项
或者使用命令行
gradlew build --offline
复制代码
AS设置菜单中 Gradle配置
参考
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END