Android 專案gradle檔案解析
阿新 • • 發佈:2019-02-19
概述,在日常開發中,我們需要理清楚專案結構裡面gradle檔案在專案中的作用,一個Android專案中一共有3個.gradle檔案,分別是1個settings.gradle,另外兩個分別是專案Project級別裡面的build.gradle和Module裡面的build.gradle。這些裡面究竟是具有什麼作用呢?
如圖所示:
Project級別的build.gradle檔案
buildscript {
repositories {
jcenter() //指定程式碼的託管倉庫為 jcenter
}
dependencies {
//宣告 gradle的構建版本,
classpath 'com.android.tools.build:gradle:2.2.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()//Jar下載的倉庫中心
}
}
//開啟一個任務,指定每次編譯都要清空工程
task clean(type : Delete) {
delete rootProject.buildDir
}
Module級別的build.gradle檔案
如圖:
apply plugin: 'com.android.application'//說明module的型別,com.android.application為應用程式,com.android.library為類庫
android {
compileSdkVersion 25//編譯的SDK版本,最佳選擇為最新的API級別
buildToolsVersion "25.0.2"//編譯的Tools版本,最佳選擇為最新的API級別
defaultConfig {//預設配置
applicationId "com.bignerdranch.android.criminalintent"//應用程式的包名
minSdkVersion 16 //支援的最低版本,作業系統會拒絕將應用安裝在系統版本低於此標準的裝置上
targetSdkVersion 25 //支援的目標版本,最佳選擇為最新的API級別
versionCode 1 //版本號
versionName "1.0" //版本名稱
}
buildTypes {//build型別
release {//釋出
minifyEnabled false //混淆開啟
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'//指定混淆規則檔案
}
}
}
dependencies {//指定當前專案的所有依賴關係:本地依賴、庫依賴、遠端依賴
implementation 'com.google.android:flexbox:0.3.2'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:design:27.0.2'
implementation 'com.android.support:appcompat-v7:26.+'
testImplementation 'junit:junit:4.12'
implementation files('libs/gson-2.7.jar')
}
每次修改完build.gradle檔案,需要與專案進行同步後才能生效。
同步的方法:
選擇Tools → Android → Sync Project with Gradle Files選單項,專案隨即會重新完成編譯。
dependencies 中的第三方依賴包也會自動下載幷包含到專案中來(類似mavean)。
Project級別的settings.gradle檔案
只包含安卓專案當中,新的專案中,他會定義我們的主moudle-app 和其他module模組在專案中的構建範圍內。一般單人單module開發可以忽略它,但是在多人開發涉及到多個module元件化就需要使用settings.gradle設定更多規則了。