Android build.gradle檔案詳解
阿新 • • 發佈:2019-02-17
Android build.gradle詳解
什麼是gradle?
gradle是一個專案構建工具,java開發中有兩個大名鼎鼎的專案構建Maven,Ant,其中maven簡單易控深受開發者喜愛。
專案構建工具是什麼?能幹嗎?
開發某些專案時,需要很多jar或者庫的支援,還沒開始開發就下載了n多個庫,浪費了時間不說,這些庫之間相容性又無法保證。刪了?白下載了。不刪?又不相容。此時就需要使用專案構建工具,簡單的說就是一個可以根據簡單的配置檔案自動去下載相應包/庫的軟體。自動的還很簡單,不用豈不虧了。多個專案構建工具各有特點,但是核心思想一樣。
gradle的特色?
首先,goole推薦使用的Android開發工具中自帶了Gradle可見其一定有過人之處。不同於Maven基於XML檔案來完成配置,Gradle使用特定的語言(DSL)來宣告配置,難度還行,但是簡單方便。
下面是開發中的兩個build.gradle檔案
build.gradle(project MyFirst)
buildscript {
repositories {
jcenter()
//是一個類似於github的程式碼託管倉庫,聲明瞭此配置,
//可以輕鬆引用 jcenter上的開源專案
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.2'
//gradle是一個強大的專案構建工具,不僅可以構建Android,還可以構建java,C++等
//此處引用android的外掛
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
build.gradle(Module:app)
// 宣告是Android程式,
//com.android.application 表示這是一個應用程式模組
//com.android.library 標識這是一個庫模組
//而這區別:前者可以直接執行,後著是依附別的應用程式執行
apply plugin: 'com.android.application'
android {
// 編譯SDK的版本
compileSdkVersion 21
// build tools的版本
buildToolsVersion "21.1.1"
defaultConfig {
// 應用的包名
applicationId "me.storm.ninegag"
//Android支援的最低版本
minSdkVersion 14
targetSdkVersion 21
versionCode 1
versionName "1.0.0"
}
// java版本
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
//指定生成安裝檔案的相關配置
buildTypes {
release {
// 是否進行混淆
minifyEnabled false
// 混淆檔案的位置
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
//proguard-android.txt 在Android SDK目錄下,裡面是所有專案的混淆規則
//proguard-rules.pro 是當前專案的根目錄下的,裡面可以編寫特有的混淆規則
}
debug{ //測試版安裝檔案的配置(可以忽略)
}
}
// 移除lint檢查的error
lintOptions {
abortOnError false
}
}
//依賴關係
//本地依賴:可以對本地Jar包或目錄新增依賴關係
//庫依賴:可以對專案中的庫模組新增依賴關係
//遠端以來:可以對 jcenter庫上的開源專案新增依賴
//
dependencies {
// 編譯libs目錄下的所有jar包
compile fileTree(dir: 'libs', include: ['*.jar'])
//依賴宣告,標識將libs目錄下多有.jar字尾的檔案都新增到專案的構建路徑當中
compile 'com.android.support:support-v4:21.0.2'
//標準的遠端以來格式 依次是 域名:組織名:版本號
compile 'com.etsy.android.grid:library:1.0.5'
compile 'com.alexvasilkov:foldable-layout:1.0.1'
// 編譯extras目錄下的ShimmerAndroid模組
compile project(':extras:ShimmerAndroid')
}