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

你可能感兴趣的:(Android Gradle 插件 -- Android Gradle 工程示例)