C++学习(三九七)Android Stdudio(AS)提高构建速度的方法
Posted hankern
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++学习(三九七)Android Stdudio(AS)提高构建速度的方法相关的知识,希望对你有一定的参考价值。
1、找到gradle.properties文件
在里面加上:
org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.jvmargs=-Xmx768m
# 编译时使用守护进程
org.gradle.daemon=true
#JVM最大允许分配的堆内存,按需分配
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
#使用并行编译
org.gradle.parallel=true
org.gradle.configureondemand=true
原理:增大gradle运行的Java虚拟机的大小,让gradle在编译的时候使用独立进程,让gradle可以并发的运行。
2、修改\\studio64.exe.vmoptions or studio.exe.vmoptions
找到这个文件后进行编辑,在最开始设置内存大小
将数据进行一下修改:
将Xms改为256,将Xmx改为2048
3、升级gradle
4、取消一些联网操作或者使用离线模式
打开File->Settings->appearance &behavior->system setting->Updates,把两个选择框都取消选中。
5、使用offline work和Local gradle
第一次启动的时候需要下载Gradle,地址:https://gradle.org/releases,下载对应版本放到C:\\User{username}.gradle\\wrapper\\dists\\gradle-3.3-all(版本根据下载的版本修改即可)
setting->Build,Execution,Deployment->gradle,把offline work选中,并选择Use local Gradle distribution,里面的路径是AS安装路径/gradle/gradle-x.xx.x
6、minSdkVersion
当minSdkVersion为21以下的时候的时候(不包含21),则编译时间会大大增加。我们可以通过定制开发版本编译minSdkVersion为21来提高开发效率
7、避免使用multi-APK
当需要针对不同的ABI或dpi做支持,使用spilts{}对工程生成不同apk时可以使用该方法。
在开发调试的时候,关闭splits功能,具体配置如下:
android {
...
if (project.hasProperty(‘devBuild’)){
splits.abi.enable = false
splits.density.enable =false
}
...
}
8、PdevBuild编译选项
打开Preferences -> Build, Execution, Deployment -> Compiler,再Command-line选项后填写-PdevBuild
9、减少打包的资源文件
在我们进行开发调试的时候,没有必要对所有的资源文件进行编译,通常只选择一种可以减少编译时间,具体配置如下:
android{
...
productFlavors {
development {
minSdkVersion 21
//only package english translations, and xxhdpi resources
resConfigs (“zh”, “xxhdpi”)
}
}
...
}
10、禁用PNG压缩
11、使用Gradle缓存
Gradle缓存是Gradle 3.5的新特性,当缓存开启时,Gradle将缓存并重用之前构建的结果。具体在gradle.properties中增加如下配置:
org.gradle.caching=true
12、针对项目构建时间具体进行优化
针对每个项目的构建呢,具体的优化也不会相同,我们可以将我们项目的具体构建时间输出成文档,具体分析哪块的构建时间过长,来针对性的优化。具体命令如下:
gradlew --profile --recompile-scripts --offline --rerun-tasks assembleFlavorDebug
--profile:启用分析。
--recompile-scripts:在绕过缓存时强制重新编译脚本。
--offline:禁止 Gradle 提取在线依赖项。这样可以确保 Gradle 在尝试更新依赖项时引起的任何延迟都不会干扰您的分析数据。您应当已将项目构建一次,以便确保 Gradle 已经下载和缓存您的依赖项。
--rerun-tasks:强制 Gradle 重新运行所有任务并忽略任何任务优化。 构建完成后,在project-root/build/reports/profile/ 目录下使用浏览器打开生成的profile-timestamp.html即可看到具体的构建时间报告。
13、使用本地gradle
以上是关于C++学习(三九七)Android Stdudio(AS)提高构建速度的方法的主要内容,如果未能解决你的问题,请参考以下文章
C++学习(三九四)undefined reference to `__dso_handle‘