目錄:
1、Gradle初識
2、Gradle加速
3、AndroidStudio工程下的build.gradle文件
4、AndroidStudio導(dǎo)入工程還是卡卡卡???

1. Gradle是什么?
1.1. 概念
Gradle是一個基于Apache Ant和Apache Maven概念的項(xiàng)目自動化建構(gòu)工具。一種依賴管理工具,面向Java應(yīng)用為主,它拋棄了基于XML的各種繁瑣配置,取而代之的是一種基于Groovy的內(nèi)部領(lǐng)域特定(DSL)語言。 用于自動化構(gòu)建、測試、發(fā)布打包。
1.2. Gradle的Project與Task
Project工程:一個待編譯的工程稱為一個Project工程
Task任務(wù):每一個Project在構(gòu)建的時候都包含一些列的任務(wù),例如在AndroidStudio中的Gradle編譯就包括:
- Java源碼編譯任務(wù)
- 資源編譯任務(wù)
- JNI編譯任務(wù)
- lint檢查任務(wù)
- 打包生成apk任務(wù)
- 簽名任務(wù)等等
1.3. Gradle做什么用?
- 依賴管理
- 版本發(fā)布
- 差異管理
2. Gradle加速
安卓開發(fā)過程中最不能忍的就是Gradle那龜速的構(gòu)建速度。AndroidStudio使用最郁悶?zāi)^于導(dǎo)入一個工程等上大半天。所以提高項(xiàng)目的構(gòu)建速度勢在必行。
- 1、給Gradle配置一個gradle.properties文件
在用戶目錄下的.gradle文件夾里新增一個名為gradle.properties的gradle屬性配置文件。
在文件中添加以下內(nèi)容:
//讓gradle使用單獨(dú)的守護(hù)進(jìn)程
org.gradle.daemon=true
//讓gradle并行編譯
org.gradle.parallel=true
//讓gradle在需要的時候才配置
org.gradle.configureondemand=true
//增加gradle運(yùn)行的java虛擬機(jī)的大小
org.gradle.jvmargs=-Xmx1024m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
這里是對所有的工程生效。
如果將gradle.properties文件只配置在單個工程下,那么只對該工程有效。
- 使用國內(nèi)的maven倉庫,這里用的是阿里云的。
在用戶目錄下的.gradle文件夾里新增一個名為ini.gradle的gradle初始化配置文件。
在文件中添加以下內(nèi)容:
allprojects{
repositories {
def REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public/'
all { ArtifactRepository repo ->
if(repo instanceof MavenArtifactRepository){
def url = repo.url.toString()
if (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com/')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $REPOSITORY_URL."
remove repo
}
}
}
maven {
url REPOSITORY_URL
}
}
}
- 修改AndroidStudio的配置:offline的工作模式,這樣就不用每次都去抓取最新的內(nèi)容,本地有就直接使用本地的:

同時對Compiler做如下配置:

- 修改本地倉庫的位置,避免占用C盤內(nèi)存,影響運(yùn)行速度。
在另一個盤符下新建一個文件夾,將用戶目錄下的.gradle文件夾全部拷貝到該目錄下。比如我是遷移到T盤的GradleRepo文件夾下。
然后添加系統(tǒng)環(huán)境變量:
GRADLE_USER_HOME=t:/GradleRepo/.gradle
3. AndroidStudio工程下的build.gradle文件
項(xiàng)目根目錄下的build.gradle內(nèi)容,默認(rèn)包含三個標(biāo)簽:
- buildscript
- allpprojects
- task clean
// Top-level build file where you can add configuration options common to all sub-projects/modules.
// gradle腳本自身需要使用的資源。可以聲明的資源包括依賴項(xiàng)、第三方插件、maven倉庫地址等。
buildscript {
repositories { // 聲明倉庫源
jcenter() // 中央遠(yuǎn)程倉庫,兼容maven中心倉庫,性能更優(yōu)
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.0' // 聲明gradle插件的版本
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
// 所有Project默認(rèn)的倉庫源
allprojects {
repositories {
jcenter()
}
}
// 聲明一個名為clean的任務(wù),作用是每當(dāng)修改settings.gradle文件后點(diǎn)擊同步,就會刪除rootProject.buildDir下的文件(清除了External Libraries里的包,重新添加一次)
task clean(type: Delete) {
delete rootProject.buildDir
}
應(yīng)用android app目錄下的build.gradle文件,默認(rèn)包含三個標(biāo)簽:
- apply plugin
- android
- dependencies
//聲明類型是安卓應(yīng)用
apply plugin: 'com.android.application'
android {
compileSdkVersion 25 // 編譯的SDK版本
buildToolsVersion "25.0.2" // 編譯的tools版本
// 一些默認(rèn)的配置
defaultConfig {
applicationId "com.lisathecat.mvp.my_mvp_app" // 包名
minSdkVersion 15 // 支持的最低SDK版本
targetSdkVersion 25 // 支持的目標(biāo)版本
versionCode 1 // 版本號
versionName "1.0" //版本名稱
//AndroidJUnitRunner單元測試在gradle文件下的配置
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes { //build類型
release {//發(fā)布配置
minifyEnabled false //關(guān)閉混淆
//指定proguard文件
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {//調(diào)試配置
signingConfig signingConfigs.release
}
}
}
dependencies {
// 編譯本地libs目錄下的所有依賴
compile fileTree(dir: 'libs', include: ['*.jar'])
// 測試編譯配置
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
// 項(xiàng)目添加的引用包
compile 'com.android.support:appcompat-v7:25.2.0'
compile 'com.android.support:design:25.2.0'
compile 'com.android.support.constraint:constraint-layout:1.0.1'
testCompile 'junit:junit:4.12'
}
4. AndroidStudio導(dǎo)入工程還是卡卡卡???
AndroidStudio安裝的同時也會安裝Gradle插件,在用戶的根目錄下同時生成.gradle文件,在.gradle/wrapper/dists目錄下面有gradle-versioncode-all,如:gradle-3.3-all,gradle-2.14.1-all這樣的文件夾。
在導(dǎo)入安卓工程的時候常常會出現(xiàn)卡住的現(xiàn)象,那是因?yàn)?code>.gradle里面沒有工程設(shè)置的構(gòu)建工程的gradle版本,所以AndroidStudio在默默下載對應(yīng)的gradle版本。
可以考慮先修改配置文件再導(dǎo)入。
- Gradle,包括Gradle使用版本和Android插件版本
- JDK,這個所有的Java程序都需要
- Compile Sdk—需要的Android SDK
- Build Tool—編譯工具
- 眾多第三方包
Gradle各個版本下載通道
安卓開發(fā)各種工具下載通道
參考資料:
AndroidStudio下gradle的入門介紹與使用
加速Android Studio的Gradle構(gòu)建速度
學(xué)習(xí)Android Studio里的Gradle
AndroidStudio導(dǎo)入太慢?。。。