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‘

C++学习(三九九)ADRP指令

C++学习(三九八)grep命令

C++学习(三九六)如何查看.o文件

C++学习(四三九)waiting for debugger

C++学习(三九五)ELF类型文件