1.
什么是Gradle?什么是Gradle插件?
软件开发过程不仅仅是编写代码
,还涉及到对项目的管理
。
比如:添加项目的依赖,打包,签名,发布等一系列操作。如果你每天都在做这些操作,那有没有想过这些操作可以像代码一样被描述出来,供我们复用以及自动运行。
没错,这就是Gradle替我们做的事!Gradle通过编写一个名为build.gradle
的脚本文件对项目进行配置,再根据这个脚本对项目进行构建。
那么,如何来提供这个Gradle构建环境
呢?这就需要通过安装Gradle插件
来使系统能支持运行Gradle。
安装Android Studio后就已经帮我们安装了Gradle插件
.但Gradle插件是独立于Android Studio运行的,所以它的更新也是与Android Studio分开的。
2.
Gradle 中语法汇总
2.1
dependsOn 表示在自己之前先执行这个方法
3.
Gradle 常见问题
1.
Error while generating the main dex list
报错信息
com.android.build.api.transform.TransformException: Error while generating the main dex list
根据字面理解:项目重复导入了.jar包所致
排查Android Studio项目根目录下 cmd
gradle assembleDebug --stacktrace
这个时候,重复导入的文件会列出详情,针对性删除或解决冲突即可
2.
gradle编译慢(jcenter文件下载慢等)
替换jcenter()为阿里的一个镜像,如下代码段
buildscript {
repositories {
google()
// jcenter()
maven {
url 'http://maven.aliyun.com/nexus/content/groups/public/'
}
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
}
}
allprojects {
repositories {
google()
// jcenter()
maven {
url 'http://maven.aliyun.com/nexus/content/groups/public/'
}
}
}
3.
大伙儿如果删除了本机的.gradle
,重新开启Android Studio,sync会很久,很久
4.
要为您的项目添加依赖项,请在您的 build.gradle
文件的 dependencies
程序块中指定依赖项配置,例如 implementation
例如,以下这个应用模块的 build.gradle 文件包括三种不同类型的依赖项:
apply plugin: 'com.android.application'
android { ... }
dependencies {
// Dependency on a local library module
// 这段代码声明名为“mylibrary”的 Android 库模块的依赖项(该名称必须匹配使用 settings.gradle 文件中的 include: 定义的库名称)。
// 在构建您的应用时,构建系统会编译库模块,并将生成的编译内容打包到 APK中
implementation project(":mylibrary")
// Dependency on local binaries(本地二进制文件依赖项)
implementation fileTree(dir: 'libs', include: ['*.jar'])
// Dependency on a remote binary
implementation 'com.example.android:app-magic:12.3'
// 以上代码实际上是下列代码的缩写形式:
implementation group: 'com.example.android', name: 'app-magic', version: '12.3'
}
5.
依赖项配置
在dependencies
代码块内,您可以使用几种不同依赖项配置中的一种(例如上文所示的 implementation)声明库依赖项。 每项依赖项配置都为 Gradle 提供有关如何使用依赖项的不同说明。 下表介绍您可以在 Android 项目中对依赖项使用的每种配置。 此表还将这些配置与自 Android Gradle Plugin 3.0.0 起弃用的配置进行比较
相信这个表格大家都很熟悉了
6.
排除传递依赖项
随着应用范围的扩大,其中可包含许多依赖项,包括直接依赖项和传递依赖项(应用的导入库所依赖的库)。 要排除不再需要的传递依赖项,您可以使用 exclude 关键字,如下所示:
dependencies {
implementation('some-library') {
exclude group: 'com.example.imgtools', module: 'native'
}
}
7.
远程代码库
如果您的依赖项并非本地库或文件树,Gradle 会在您的 build.gradle 文件 repositories 程序块中指定的任何一个在线代码库中寻找文件。 列出各代码库的顺序决定了 Gradle 在这些代码库中搜索各项目依赖项的顺序。 例如,如果代码库 A 和 B 都提供某依赖项,而您先列出代码库 A,则 Gradle 会从代码库 A 下载此依赖项。
默认情况下,Android Studio 新项目会在项目的顶级 build.gradle 文件中指定 Google 的 Maven 代码库和 JCenter 作为代码库位置,如下所示:
allprojects {
repositories {
google()
jcenter()
}
}
如果您需要的内容来自 Maven 中央代码库,则添加 mavenCentral();如果来自本地代码库,则使用 mavenLocal():
allprojects {
repositories {
google()
jcenter()
mavenCentral()
mavenLocal()
}
}
6.
参考
- 快速查看Gradle项目类库依赖情况
- -bash :gradlew command not found
- Gradle 编译报错 - Error while generating the main dex list
这篇帮我解决了这个问题
- gradle 插件版本、gradle版本 和buildToolsVersion之间的对应关系
- Get started with build scans
- 快速查看Gradle项目类库依赖情况
- Android Studio 常见问题-Gradle
- Android Gradle和Gradle插件区别
Gradle Gradle Tools版本匹配-官方
- Command-Line Interface
- Build Environment
- Minimum supported Gradle version is 5.1.1. Current version is 4.7
- 解决Minimum supported Gradle version is 3.3. Current version is 2.14.1问题
- com.gradle.build-scan
- Android和Maven仓库那些事
- 依赖项类型