Gradle 编译加速
一、分析Gradle构建慢的原因 1.配置Gradle构建报表 File --> Settings --> Build,Execution,Deployment --> Compiler 修改 Command-line Options:内容,追加--profile 2.查看生成的gradle构建报表 Sync Project , build , run, Make project ... 之后会在 Project的 build下,生成 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 打勾,如下: 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' }