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

----《Android Gradle 权威指南》学习笔记

总目录:Gradle 学习系列 -- 目录

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

1 AndroidStudio 工程结构

1.1 Android Gradle 插件也需要在 setting 文件中通过 include 配置包含的子工程。其配置和工程结构如图所示:
6.3.png

1.2 Android 的工程结构和 Java 工程相比没有没有很大的变化。src 目录下的 androidTest、main、test 分别是3个 SourceSet,分别对应 Android 单元测试代码、Android App 主代码和资源、普通的单元测试代码。

2 子项目的 build.gradle 文件

2.1 在 AndroidStudio 中新建工程并新建子项目后,子项目的 build.gradle 文件中内容为:

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 工程进行自定义配置。

3 常用方法简介

3.1 defaultConfig 是 Android 对象中的一个配置块,负责定义所有的默认配置,它是一个 ProductFlavor。ProductFlavor 允许根据不同的情况同时生成多个不同的 apk 包。比如使用多渠道打包时,如果不针对自定义的 ProductFlavor 单独配置,则会这个 ProductFlavor 使用默认的 defaultConfig 配置。如果一个 ProductFlavor 没有被特殊定义配置的话,默认就会使用 defaultConfig{} 块指定的配置。比如包名、版本号、版本名称等。

3.1.1 applicationId
applicationId 是 ProductFlavor 的一个属性,用于指定生成 APP 的包名,默认情况下是 null。在构建的时候,会从 AndroidManifest.xml 中读取。

3.1.2 minSdk
minSdk 是 ProductFlavor 的一个方法,可以指定 APP 最低支持的 Android 系统版本,其对应的值是 Android SDK 的 API LEVEL。它接受一个整数值。

3.1.3 targetSdk
targetSdk 用于配置工程中基于哪个 Android SDK 进行开发,它的可选值和 minSdk 一样。没有配置的时候也会从 AndroidManifest.xml 中读取。

3.1.4 versionCode
versionCode 也是 ProductFlavor 的一个属性,用于配置 Android APP 的内部版本号,它是一个整数值,通常用于版本的升级。没有配置的时候会从 AndroidManifest.xml 中读取,一般建议进行配置。

3.1.5 versionName
versionName 和 versionCode 类似,也是 ProductFlavor 的一个属性,用于配置 Android APP 的版本名称,主要是给用户看的,让用户知道当前 APP 的版本。和 versionCode 相比,versionCode 是内部使用,versionName 是外部使用,一起配合完成 Android APP 的版本信息。

3.1.6 testInstrumentationRunner
testInstrumentationRunner 用于配置单元测试时使用的 Runner,默认使用的是 android.test.InstrumentationTestRunner,如果想使用自定义的 Runner,修改这个值即可。

3.2 buildTypes 是一个 NamedDomainObjectContainer 类型,是一个域对象。和 SourceSet 里面有 main、test 等一样,buildTypes 里面有 debug、release等。可以在 buildTypes{} 里面新增任意多个需要构建的类型。Gradle 会自动创建一个对应的 BuildType,名字就是定义的类型,比如:debug、release等。

3.3 minifyEnabled 表示是否为该构建类型启用混淆。false 表示不启用,true 表示启用。

3.4 proguardFiles
(1) proguardFiles 表示当启用混淆时所使用的 proguard 的配置文件。可以通过它配置如何进行 proguard 混淆。比如混淆的级别,哪些类和方法不进行混淆等。
(2) proguardFiles 方法接受一个可变参数,所以可以同时设置多个配置文件。
(3) getDefaultProguardFile 是 Android 扩展的一个方法,可以获取 Android SDK 目录下默认的 proguard 文件。在 android-sdk/tools/proguard/ 目录下,文件名就是传入的参数名字 proguard-android.txt

3.5 总结:
build.gradle文件分为4个部分,
defaultConfig 默认配置
signingConfigs 签名信息配置
buildTypes productFlavors 打包apk重命名
dependencies 依赖配置

4 Android Gradle 任务

Android Gradle 插件是基于 Java 的插件,所以 Android 插件基本上包含了 Java 插件的功能,包含继承的任务。Android 也添加了很多的任务。如图所示:
6.4.png
相关代码:https://gitee.com/fzq.com/gradle-demos
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,686评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,668评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,160评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,736评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,847评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,043评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,129评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,872评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,318评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,645评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,777评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,861评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,589评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,687评论 2 351

推荐阅读更多精彩内容