Gradle的一系列疑惑

我们用 Android Studio 新创建一个项目时,会自动生成 3 个 Gradle 文件:

1. setting.gradle

setting.gradle 文件在 初始化过程中被执行,构建器通过 setting.gradle 文件中的内容了解哪些模块将被 build

2.主目录下的 build.gradle

主目录下的 build.gradle 文件是最顶层的构建文件,这里配置所有模块通用的配置信息。默认的顶层 build.gradle 文件中包括两个代码块 (buildscript 和 allprojects):
buildscript 是所有项目的构建脚本配置,主要包括依赖的仓库和依赖的 gradle 版本
JCenter 是一个很有名的 Maven 仓库。确定了依赖的仓库后,我们就可以在 dependencies 代码块中添加依赖的、在 jcenter 仓库中的包了。
dependencies 代码块用于配置构建过程中的依赖包,注意,这里是用于构建过程,因此你不能将你的应用模块中需要依赖的库添加到这里。
默认情况下唯一被用于构建过程中的依赖包是 Gradle for Android 的插件。我们还可以添加一些其他用于构建的插件,比如 retrolambda, apt, freeline 
allprojects 代码块用来声明将被用于所有模块的属性,注意是所有模块。常见的就是配置仓库地址(jcenter, 自定义 maven 仓库等),你还可以在 allprojects 中创建 tasks,这些 tasks 最终会运用到所有模块中。

3.模块下的 build.gradle

模块下的 build.gradle 文件只应用于当前模块,你可以覆盖主目录下的 build.gradle 的内容。

apply plugin 
apply plugin 声明了接下来要用到哪些插件的内容,上图表明使用了 androd 插件,这里之所以能用 android 插件,是因为主目录中声明了 Gradle for Android 的依赖,这里才能使用。

因此当我们需要使用其他插件,比如 retrolambda 时,首先需要在主目录 build.gradle 文件中添加依赖,然后在模块 build.gradle 中声明使用 retrolambda 插件。

android 
在声明了 android 插件后,我们就可以使用 android 插件提供的内容进行构建配置。

android 构建配置中必须要有的是两个版本:

  • compileSdkVersion : 编译应用的 Android API 版本
  • buildToolsVersion : 构建工具版本 
    • 构建工具包括 aapt, zipalign, renderscript 等
    • 用于在打包时生成各种中间产物,可以从 SDK Manager 中下载构建工具

defaultConfig 代码块用于配置应用的默认属性,可以覆盖 AndroidManifest.xml 中的属性,比如:

  • applicationId : 覆盖了 AndroidManifest 中的 package name
  • minSdkVersion : 覆盖了 AndroidManifest 中的属性,配置运行应用的最小 API
  • targetSdkVersion : 一样,用于通知系统当前应用已经被这个版本测试过,和之前的 compileSdkVersion 没有关系
  • versionCode : 一样,应用的版本号
  • versionName : 版本名称

defaultConfig 还可以添加签名,占位符等等,这里只列这些。

buildTypes 用来定义如何构建和打包不同类型的应用,常见的就是测试和生产。

dependencies 
上图中可以看到 依赖配置 在 android 代码块的外边,事实上依赖配置是 Gradle 配置的基础功能,也就是说除了 Android,其他类型的项目(比如 JavaEE )也可以这么用。

我们可以在依赖配置中,添加要使用的库,当然也可以添加本地的 jar 包。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值