----《Android Gradle 權(quán)威指南》學(xué)習(xí)筆記
總目錄:Gradle 學(xué)習(xí)系列 -- 目錄
1 AndroidStudio 工程結(jié)構(gòu)
1.1 Android Gradle 插件也需要在 setting 文件中通過 include 配置包含的子工程桨踪。其配置和工程結(jié)構(gòu)如圖所示:1.2 Android 的工程結(jié)構(gòu)和 Java 工程相比沒有沒有很大的變化。src 目錄下的 androidTest唤衫、main、test 分別是3個 SourceSet状飞,分別對應(yīng) Android 單元測試代碼刑赶、Android App 主代碼和資源、普通的單元測試代碼福扬。
2 子項目的 build.gradle 文件
2.1 在 AndroidStudio 中新建工程并新建子項目后茵瀑,子項目的 build.gradle 文件中內(nèi)容為:
plugins {
id 'com.android.application'
}
android {
compileSdk 31
defaultConfig {
applicationId "com.cakes.testmodule"
minSdk 21
targetSdk 31
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.3.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}
2.2 在 Android 工程中间驮,Android Gradle 工程的配置,都是在 android{} 代碼塊中马昨,這個是唯一的入口竞帽。通過它扛施,可以對 Android Gradle 工程進(jìn)行自定義配置。
3 常用方法簡介
3.1 defaultConfig 是 Android 對象中的一個配置塊屹篓,負(fù)責(zé)定義所有的默認(rèn)配置疙渣,它是一個 ProductFlavor。ProductFlavor 允許根據(jù)不同的情況同時生成多個不同的 apk 包堆巧。比如使用多渠道打包時妄荔,如果不針對自定義的 ProductFlavor 單獨(dú)配置,則會這個 ProductFlavor 使用默認(rèn)的 defaultConfig 配置谍肤。如果一個 ProductFlavor 沒有被特殊定義配置的話啦租,默認(rèn)就會使用 defaultConfig{} 塊指定的配置。比如包名荒揣、版本號篷角、版本名稱等。
3.1.1 applicationId
applicationId 是 ProductFlavor 的一個屬性乳附,用于指定生成 APP 的包名内地,默認(rèn)情況下是 null伴澄。在構(gòu)建的時候赋除,會從 AndroidManifest.xml 中讀取。
3.1.2 minSdk
minSdk 是 ProductFlavor 的一個方法非凌,可以指定 APP 最低支持的 Android 系統(tǒng)版本举农,其對應(yīng)的值是 Android SDK 的 API LEVEL。它接受一個整數(shù)值敞嗡。
3.1.3 targetSdk
targetSdk 用于配置工程中基于哪個 Android SDK 進(jìn)行開發(fā)颁糟,它的可選值和 minSdk 一樣。沒有配置的時候也會從 AndroidManifest.xml 中讀取喉悴。
3.1.4 versionCode
versionCode 也是 ProductFlavor 的一個屬性棱貌,用于配置 Android APP 的內(nèi)部版本號,它是一個整數(shù)值箕肃,通常用于版本的升級婚脱。沒有配置的時候會從 AndroidManifest.xml 中讀取,一般建議進(jìn)行配置勺像。
3.1.5 versionName
versionName 和 versionCode 類似障贸,也是 ProductFlavor 的一個屬性,用于配置 Android APP 的版本名稱吟宦,主要是給用戶看的篮洁,讓用戶知道當(dāng)前 APP 的版本。和 versionCode 相比殃姓,versionCode 是內(nèi)部使用袁波,versionName 是外部使用瓦阐,一起配合完成 Android APP 的版本信息。
3.1.6 testInstrumentationRunner
testInstrumentationRunner 用于配置單元測試時使用的 Runner篷牌,默認(rèn)使用的是 android.test.InstrumentationTestRunner垄分,如果想使用自定義的 Runner,修改這個值即可娃磺。
3.2 buildTypes 是一個 NamedDomainObjectContainer 類型薄湿,是一個域?qū)ο蟆:?SourceSet 里面有 main偷卧、test 等一樣豺瘤,buildTypes 里面有 debug、release等听诸∽螅可以在 buildTypes{} 里面新增任意多個需要構(gòu)建的類型。Gradle 會自動創(chuàng)建一個對應(yīng)的 BuildType晌梨,名字就是定義的類型桥嗤,比如:debug、release等仔蝌。
3.3 minifyEnabled 表示是否為該構(gòu)建類型啟用混淆泛领。false 表示不啟用,true 表示啟用敛惊。
3.4 proguardFiles
(1) proguardFiles 表示當(dāng)啟用混淆時所使用的 proguard 的配置文件渊鞋。可以通過它配置如何進(jìn)行 proguard 混淆瞧挤。比如混淆的級別锡宋,哪些類和方法不進(jìn)行混淆等。
(2) proguardFiles 方法接受一個可變參數(shù)特恬,所以可以同時設(shè)置多個配置文件执俩。
(3) getDefaultProguardFile 是 Android 擴(kuò)展的一個方法,可以獲取 Android SDK 目錄下默認(rèn)的 proguard 文件癌刽。在 android-sdk/tools/proguard/ 目錄下役首,文件名就是傳入的參數(shù)名字 proguard-android.txt
3.5 總結(jié):
build.gradle文件分為4個部分,
defaultConfig 默認(rèn)配置
signingConfigs 簽名信息配置
buildTypes productFlavors 打包apk重命名
dependencies 依賴配置