Android 构建时会编译源代码和应用资源,然后打包为APK文件。Android Studio 使用 Gradle 来自动执行和管理构建流程。Android Plugin for Gradle 与 Gradle 搭配使用,专门为 Android 应用的构建提供支持。
构建流程
由 Gradle 和 Android Plugin 管理,编译器将应用模块(包括源代码、资源文件、AIDL文件)和依赖项(包括库模块、AAR库、JAR库)编译成DEX文件和编译后的资源。然后由APK打包器和签名文件一起打包出APK。
自定义版本配置
依赖项
依赖项类型
依赖项有以下3中依赖类型:
// 本地库模块
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 为给定模块解析的依赖项。
版本配置文件
版本配置文件即build.gradle
文件。这些文件使用的是 DSL (Domain Specific Language 领域特定语言)以 Groovy 来编写。Android Plugin for Gradle 中引入了大多数需要的 DSL 元素。
Gradle 设置文件
setting.gradle
文件用于指示构建build
时包括哪些module
。
顶层版本文件
Project
的build.gradle
,用于定义项目中所有模块的配置。
配置项目全局属性
多模块项目时,有可能需要在不同模块之间共享相同属性,此时就可以把这些属性写在Project
的build.gradle
的ext
代码块中:
ext {
compileSdkVersion = 28
supportLibVersion = "28.0.0"
}
在模块module
中的build.gradle
中使用:
android {
compileSdkVersion rootProject.ext.compileSdkVersion
}
dependencies {
implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
}
模块版本文件
// 应用 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
,点击即可立即同步。
或者也可以点击
进行同步。
参考
待
2020-3-12 11:52:14