Android Gradle 插件 -- Android Gradle 工程示例

----《Android Gradle 權(quán)威指南》學(xué)習(xí)筆記

總目錄:Gradle 學(xué)習(xí)系列 -- 目錄

上一篇:Android Gradle 插件 -- 簡介

1 AndroidStudio 工程結(jié)構(gòu)

1.1 Android Gradle 插件也需要在 setting 文件中通過 include 配置包含的子工程桨踪。其配置和工程結(jié)構(gòu)如圖所示:
6.3.png

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 依賴配置

4 Android Gradle 任務(wù)

Android Gradle 插件是基于 Java 的插件妒穴,所以 Android 插件基本上包含了 Java 插件的功能宋税,包含繼承的任務(wù)。Android 也添加了很多的任務(wù)讼油。如圖所示:
6.4.png
相關(guān)代碼:https://gitee.com/fzq.com/gradle-demos
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末杰赛,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子矮台,更是在濱河造成了極大的恐慌乏屯,老刑警劉巖根时,帶你破解...
    沈念sama閱讀 212,332評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異辰晕,居然都是意外死亡蛤迎,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,508評論 3 385
  • 文/潘曉璐 我一進(jìn)店門含友,熙熙樓的掌柜王于貴愁眉苦臉地迎上來替裆,“玉大人,你說我怎么就攤上這事窘问×就” “怎么了?”我有些...
    開封第一講書人閱讀 157,812評論 0 348
  • 文/不壞的土叔 我叫張陵惠赫,是天一觀的道長把鉴。 經(jīng)常有香客問我,道長儿咱,這世上最難降的妖魔是什么庭砍? 我笑而不...
    開封第一講書人閱讀 56,607評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮混埠,結(jié)果婚禮上怠缸,老公的妹妹穿的比我還像新娘。我一直安慰自己岔冀,他們只是感情好凯旭,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,728評論 6 386
  • 文/花漫 我一把揭開白布概耻。 她就那樣靜靜地躺著使套,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鞠柄。 梳的紋絲不亂的頭發(fā)上侦高,一...
    開封第一講書人閱讀 49,919評論 1 290
  • 那天,我揣著相機(jī)與錄音厌杜,去河邊找鬼奉呛。 笑死,一個胖子當(dāng)著我的面吹牛夯尽,可吹牛的內(nèi)容都是我干的瞧壮。 我是一名探鬼主播,決...
    沈念sama閱讀 39,071評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼匙握,長吁一口氣:“原來是場噩夢啊……” “哼咆槽!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起圈纺,我...
    開封第一講書人閱讀 37,802評論 0 268
  • 序言:老撾萬榮一對情侶失蹤秦忿,失蹤者是張志新(化名)和其女友劉穎麦射,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體灯谣,經(jīng)...
    沈念sama閱讀 44,256評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡潜秋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,576評論 2 327
  • 正文 我和宋清朗相戀三年贞瞒,在試婚紗的時候發(fā)現(xiàn)自己被綠了羡洛。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,712評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡乱豆,死狀恐怖辜窑,靈堂內(nèi)的尸體忽然破棺而出杀饵,到底是詐尸還是另有隱情,我是刑警寧澤谬擦,帶...
    沈念sama閱讀 34,389評論 4 332
  • 正文 年R本政府宣布切距,位于F島的核電站,受9級特大地震影響惨远,放射性物質(zhì)發(fā)生泄漏谜悟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,032評論 3 316
  • 文/蒙蒙 一北秽、第九天 我趴在偏房一處隱蔽的房頂上張望葡幸。 院中可真熱鬧,春花似錦贺氓、人聲如沸蔚叨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蔑水。三九已至,卻和暖如春扬蕊,著一層夾襖步出監(jiān)牢的瞬間搀别,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,026評論 1 266
  • 我被黑心中介騙來泰國打工尾抑, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留歇父,地道東北人。 一個月前我還...
    沈念sama閱讀 46,473評論 2 360
  • 正文 我出身青樓再愈,卻偏偏與公主長得像榜苫,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子翎冲,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,606評論 2 350

推薦閱讀更多精彩內(nèi)容