Gradle是一個非常先進的項目構建工具,它使用了一種基於Groovy的領域特定語言DSL來聲明項目設置,摒棄了傳統XML(如Ant和Maven)的各種繁瑣配置
項目結構如上圖:
1、最外層目錄下的build.gradle文件(通常情況下不需要修改這個文件內容),代碼如下所示:
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
(1)這些代碼都是自動生成的,兩處repositories的閉包中都聲明了jcenter()這行配置,jcenter是一個代碼托管倉庫,配置之后我們能夠輕松引用任何jcenter上的開源項目。
(2)dependencies閉包中使用classpath聲明了一個Gradle插件。最后面部分為插件版本號
2、app目錄下的build.gradle文件,代碼如下:
apply plugin: 'com.android.application'
android {
compileSdkVersion 24
buildeToolsVersion “24.0.2”
defaultConfig {
applicationId "com.example.kpp.test01"
minSdkVersion 15
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:28.0.0-alpha3'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
implementation 'com.android.support:design:28.0.0-alpha3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'de.hdodenhof:circleimageview:2.1.0'
implementation 'com.github.bumptech.glide:glide:3.8.0'
implementation 'com.google.zxing:zxing-parent:3.3.3'
implementation 'com.lzy.net:okhttputils:+'
compile 'org.xutils:xutils:3.5.0'
compile 'com.amap.api:3dmap:latest.integration'
compile 'com.amap.api:location:latest.integration'
}
(1)第一行應用了一個插件,一般有兩種值可選:com.android.application表示是一個應用程序模塊,com.android.library表示是一個庫模塊。應用程序模塊和庫模塊的最大區別在於,一個是可以直接運行,一個只能作為代碼庫依附於別的應用程序模塊來運行
(2)android閉包,這個閉包中可以配置項目構建的各種屬性:
complieSdkVersion用於指定項目的編譯版本,這個指定成24表示使用Android 7.0系統的SDK編譯;
buildToolsVersion用於指定項目構建工具的版本,當前使用的是24.0.2;
android閉包中嵌套了一個defaultConfig閉包,defaultConfig閉包中可以對項目的更多細節進行配置:
applicationId用於指定項目的包名;
minSdkVersion用於指定項目最低兼容的Android版本,這里指定成15表示最低兼容到Android 4.0系統;
targetSdkVersion指定的值表示在該目標版本上已經做了充分的測試,系統將會為你的應用程序啟用一些最新的功能和特性,如;
versionCode用於指定項目的版本號;
versionName用於指定項目的版本名;
testInstrumentationRunner表示采用的測試框架;
(3)buildType閉包用於指定生成安裝文件的相關配置,通常只會有兩個子閉包,一個是debug,一個是release。debug閉包用於指定生成測試版本安裝文件的配置,release閉包用於指定生成正式版本安裝文件的配置。
minifyEnabled用於指定是否對項目的代碼進行混淆,true表示混淆,false表示不混淆;
proguardFile用於指定混淆時使用的規則文件,這里指定了兩個文件,第一個proguard-android.txt是在Android SDK目錄下的,里面是所有項目通用的混淆規則,第二個proguard-rules.pro是在當前項目的根目錄下的,里面可以編寫當前項目特有混淆規則。
(4)dependencies閉包,指定當前項目所有依賴。Android Studio項目共有3種依賴方式:本地依賴,庫依賴和遠程依賴。