0%

Gradle in Android

Android 构建时会编译源代码和应用资源,然后打包为APK文件。Android Studio 使用 Gradle 来自动执行和管理构建流程。Android Plugin for Gradle 与 Gradle 搭配使用,专门为 Android 应用的构建提供支持。

构建流程

由 Gradle 和 Android Plugin 管理,编译器将应用模块(包括源代码、资源文件、AIDL文件)和依赖项(包括库模块、AAR库、JAR库)编译成DEX文件和编译后的资源。然后由APK打包器和签名文件一起打包出APK。

自定义版本配置

依赖项

依赖项类型

依赖项有以下3中依赖类型:

1
2
3
4
5
6
7
8
// 本地库模块	
implementation project(":mylibrary")
// 本地二进制文件
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation files('libs/foo.jar', 'libs/bar.jar')
// 远程二进制文件
implementation 'me.aoyun.android:app-magic:12.3'
// implementation group: 'com.example.android', name: 'app-magic', version: '12.3'

依赖项配置

依赖项配置向 Gradle 提供了如何使用依赖项的说明。

新配置 已弃用配置 行为
implementation compile Gradle 会将依赖项添加到编译类路径,将依赖项打包到构建输出。同时表示在编译时,只有该module可以使用该依赖,其它module只有在运行时才能使用。
api compile Gradle 会将依赖项添加到编译路径和构建输出。与 implementation 不同的是,api依赖所有module在编译时和运行时都可使用。
annotationProcessor compile 依赖项作为注解处理器的库。

查看模块依赖项

一些直接依赖项可能具有自己的依赖项。此类依赖项称为“传递依赖项”。

Android Plugin for Gradle 提供了一项task,用来列出 Gradle 为给定模块解析的依赖项。

image.png

版本配置文件

image-20200312105420997.png

版本配置文件即build.gradle文件。这些文件使用的是 DSL (Domain Specific Language 领域特定语言)以 Groovy 来编写。Android Plugin for Gradle 中引入了大多数需要的 DSL 元素。

Gradle 设置文件

setting.gradle文件用于指示构建build时包括哪些module

顶层版本文件

Projectbuild.gradle,用于定义项目中所有模块的配置。

配置项目全局属性

多模块项目时,有可能需要在不同模块之间共享相同属性,此时就可以把这些属性写在Projectbuild.gradleext代码块中:

1
2
3
4
ext {
compileSdkVersion = 28
supportLibVersion = "28.0.0"
}

在模块module中的build.gradle 中使用:

1
2
3
4
5
6
android {
compileSdkVersion rootProject.ext.compileSdkVersion
}
dependencies {
implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
}

模块版本文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// 应用 Android Plugin for Gradle,以便使用一些变量
apply plugin: 'com.android.application'

// 指定 build 选项
android {
compileSdkVersion 29
buildToolsVersion "29.0.2"
defaultConfig {
applicationId "me.aoyun.ljetpack"
minSdkVersion 19
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
// 启用DataBinding
dataBinding {
enabled true
}
}

// 指定本module中的依赖
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
}

Gradle 属性文件

gradle.properties 配置项目全局Gradle设置

local.properties 配置构建系统的本地环境

Gradle同步

每当 Gradle 文件有改变时,会要求sync now,点击即可立即同步。

或者也可以点击

image-20200312113311347.png

进行同步。

参考

配置您的版本

添加构建依赖项

2020-3-12 11:52:14