Gradle 编译加速

简介: 一、分析Gradle构建慢的原因1.配置Gradle构建报表File --> Settings --> Build,Execution,Deployment --> Compiler修改 Command-line Options:内容,追加--profile2.查看生成的gradle构建报表Sync Project , build , run, Make project ...之后会在 Project的 build下,生成 reports文件夹。

一、分析Gradle构建慢的原因

1.配置Gradle构建报表

File --> Settings --> Build,Execution,Deployment --> Compiler
修改 Command-line Options:内容,追加--profile

img_1a8cd680c410d3ba3237bd1b5c354da9.png

2.查看生成的gradle构建报表

Sync Project , build , run, Make project ...
之后会在 Projectbuild下,生成 reports文件夹。用浏览器打开profile.html即可查看


二、解决Gradle构建慢的方法

在gradle开始优化之前先记录下没经过优化的build时间。*Build > Clean Project

1.开启gradle单独的守护进程

1.在下面目录下面创建
gradle.properties文件:
C:\Users\<username>\.gradle(windows)
2.在文件中添加:

org.gradle.daemon=true
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.parallel=true
org.gradle.configureondemand=true

这样配置是对此计算机的studio用户,所以对于所有项目都有效

2.设置 Gradle offline

File > Settings > Offline work 打勾,如下:


img_7af7b329e5e6fc72c3b1737bef2f19d0.png
3.开发使用 SDK=21
android {
    ...

    productFlavors {
        dev {
            minSdkVersion 21
        }

        release {
            minSdkVersion 14
        }
    }
}

当API 不小于21,使用 ART,在 Build 时只做 class to dex,不做 mergeing dex,会省下大量的时间。

4.引入依赖时使用 aar

连接远程仓库网络不好时候可以引入自己私有的maven仓库,或者一些国内的maven仓库。
用网上第三方的依赖库时尽量使用 aar ,自己的库模块也可以打包成aar。加快编译速度。

build.gradle文件(主工程的Top-level)

apply from:"config.gradle"//可以给所有的module引入一个配置文件

buildscript {
     repositories {
     jcenter()
}
dependencies {
    classpath 'com.android.tools.build:gradle:1.3.0'
    // NOTE: Do not place your application dependencies here; they belong
     // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()//引入远程仓库
        maven { url MAVEN_URL }//引入自己的私有maven仓库
    }
}

gradle.properties(全局配置文件)

# This can really make a significant difference if you are building a very complex project with many sub-module dependencies:
#sub-module并行构建
org.gradle.parallel=true
#后台进程构建
org.gradle.daemon=true
#私有maven仓库地址
MAVEN_URL= http://xxx.xx.1.147:8081/nexus/content/repositories/thirdparty/

build.gradle(Module)

apply plugin: 'com.android.application'//插件 决定是apk\aar\jar等

android {
compileSdkVersion 23
buildToolsVersion "24.0.0"

// 此处注释保持默认打开,关闭后可使不严格的图片可以通过编译,但会导致apk包变大
//aaptOptions.cruncherEnabled = false
//aaptOptions.useNewCruncher = false

 packagingOptions {
     exclude 'META-INF/NOTICE.txt'// 这里是具体的冲突文件全路径
     exclude 'META-INF/LICENSE.txt'
}
//默认配置
defaultConfig {
    applicationId "com.locove.meet"
    minSdkVersion 16
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
    multiDexEnabled=true//65536问题
}
sourceSets {
    main {
        jniLibs.srcDirs = ['libs']//重新配置路径
    }
}
buildTypes {
    release {
    // zipAlign优化
    zipAlignEnabled true
    // 移除无用的resource文件
    shrinkResources false
    // 混淆
    minifyEnabled false
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    signingConfig signingConfigs.releaseConfig
    }
}
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.google.code.gson:gson:2.2.+'
    testCompile 'junit:junit:4.12'
}
目录
相关文章
|
Android开发
IDEA编译gradle提示This version of the Android Support plugin for IntelliJ IDEA (or Android Studio) cannot open this project, please retry with version 2020.3.1 or newer.
IDEA编译gradle提示This version of the Android Support plugin for IntelliJ IDEA (or Android Studio) cannot open this project, please retry with version 2020.3.1 or newer.
839 1
|
1月前
|
Android开发
解决Android、Flutter编译时Gradle报错:javax.net.ssl.SSLException: Connection reset
解决Android、Flutter编译时Gradle报错:javax.net.ssl.SSLException: Connection reset
144 0
|
3月前
|
C# Android开发 开发者
Android gradle编译时字节码处理
Android gradle编译时字节码处理
44 1
|
Java 开发工具 Android开发
【错误记录】Android Studio 编译报错 ( Invalid Gradle JDK configuration found )
【错误记录】Android Studio 编译报错 ( Invalid Gradle JDK configuration found )
866 0
【错误记录】Android Studio 编译报错 ( Invalid Gradle JDK configuration found )
|
4月前
|
Java Apache Maven
在STS里使用Gradle编译Apache POI5.0.0
在STS里使用Gradle编译Apache POI5.0.0
41 0
|
4月前
|
Java Linux 开发工具
Azkaban【部署 01】Linux环境 CentOS Linux release 7.5.1804安装配置azkaban-3.70.0编译阶段(附安装包及gradle-4.6资源)
【2月更文挑战第4天】Linux环境 CentOS Linux release 7.5.1804安装配置azkaban-3.70.0编译阶段(附安装包及gradle-4.6资源)
106 1
|
4月前
|
开发工具 Android开发 开发者
Android 项目编译 Gradle 配置说明
Android 项目编译 Gradle 配置说明
250 0
|
11月前
|
Java 数据库连接 API
Gradle依赖管理:编译时和运行时依赖的区别
Gradle依赖管理:编译时和运行时依赖的区别
100 0
|
Java 开发工具 Maven
Android 编译 gradle 内存 OOM 解决之路(二)
Android 编译 gradle 内存 OOM 解决之路
|
Java Android开发
Android 编译 gradle 内存 OOM 解决之路(一)
Android 编译 gradle 内存 OOM 解决之路