Gradle系列之Android Gradle插件
原文发于微信公众号 jzman-blog,欢迎关注交流。
通过前面几篇文章学习了 Gradle 基础知识以及 Gradle 插件相关的知识,关于 Gradle 及其插件相关知识请先阅读下面几篇文章:
- Gradle系列之初识Gradle
- Gradle之Groovy基础篇
- Gradle系列之构建脚本基础
- Gradle系列之认识Gradle任务
- Gradle系列之Gradle插件
- Gradle系列之Java Gradle插件
学习 Gradle 的目的主要是为了更好的在 Android 开发中使用 Gradle,这篇文章的主要内容是 Android Gradle 插件的相关知识,主要内容如下:
- 了解 Android Gradle 插件
- Android Gradle 插件分类
- 使用 Android Gradle 插件
- Android Gradle 工程目录
- Android Gradle 基本配置
- Android Gradle 任务
了解 Android Gradle 插件
顾名思义,Android Gradle 插件就是一个用于 Android 构建项目的一个 Gradle 插件,该插件有 Google Android 开发团队开发,而且 Android 开发 IDE Android Studio 就采用 Gradle 构建项目,下面是 Android Gradle 插件的优势:
- 方便重用代码和资源;
- 可更方便的创建应用的衍生版本,如多渠道打包;
- 配置方便。可以扩展,还可以自定义构建过程
- Android Studio 与 Gradle 深度融合
Android Gradle 插件分类
Android 插件的分类是根据 Android 工程的属性进行分类的,Android 工程分为三类,具体如下:
- App 应用工程:可生成可运行的 apk ;
- Library 库工程:可生成 aar 共其他 App 应用工程使用,使用方式和 jar 一样,里面有相关的 Android 资源文件
- Test 测试工程:用于 App 应用过程或 Library 工程进行测试。
对应的就有三种不同的 Android Gradle 插件,三类插件分别是 App 插件、Library 插件和 Test 插件,其插件 id 如下:
//App插件id
com.android.application
//Library插件id
com.android.library
//Test插件
com.android.test
使用最多的肯定就是 App 插件和 Library 插件,使用这几个插件在 Android Studio 中就可以构建 Android 工程了。
使用 Android Gradle 插件
Gradle 插件使用时以插件的 id 作为唯一标识,如果是第三方的插件,还必须在 buildscript{} 中指定其 classpath,Android Gradle 插件就属于第三方插件,使用时要指定其 classpath,Android Gradle 插件托管到 jcenter 上,所以使用时要指定对应仓库,具体参考如下:
buildscript {
//配置插件仓库
repositories {
google()
jcenter()
}
//配置依赖
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
}
}
配置好第三方插件的仓库和依赖,然后使用 apply 使用该插件,具体如下:
//使用App插件
apply plugin: 'com.android.application'
android {
//编译所依赖的Android SDK的版本
compileSdkVersion 26
//构建工具的版本
buildToolsVersion '26.0.2'
//...
}
dependencies {
//...
}
在 Android 开发中一般将插件的仓库和依赖配置到根项目下的 build.gradle 文件中,其子 Module 项目将不需要在配置了,可直接使用,这里仅仅是 App 插件的使用,当然 Libray 插件的使用和 Test 插件的使用也是一样,使用时指定对应的 plugin id 即可。
Android Gradle 工程目录
下面是 Android Studio 创建 Android 工程的 Module 的目录,这也是 Android 工程的基本目录结构,参考如下:
app
├─libs
├─proguard-rules.pro
├─build.gradle
└─src
├─androidTest
│ └─java
│
├─main
│ ├─AndroidManifest.xml
│ ├─java
│ └─res
│
└─test
└─java
上述目录中 src 下面的 main、androidTest、test 是三个 SourceSet,main 表示 App 的源代码及资源目录,android 和 test 表示 Android 相关测试代码目录,此外 proguard-rules.pro 是当前项目的混淆文件,libs 用于存放 jar、aar 等库文件,build。gradle 文件用于当前配置文件。
Android Gradle 基本配置
为了介绍 Android Gradle 插件基本配置,使用 Android Studio 创建一个 Android 项目,下面的 app 的一个配置文件,具体如下:
//使用Android Gradle插件
apply plugin: 'com.android.application'
//android{}是Android工程配置的入口
android {
/**
* 指定编译依赖的Android SDK的版本,同
* compileSdkVersion android-26
* android.compileSdkVersion = 26
* android.compileSdkVersion = 'android-26'
*/
compileSdkVersion 26
//指定构建工具的版本,也可以使用属性值buildToolsVersion设置其版本
buildToolsVersion '26.0.2'
/**
* 默认配置,defaultConfig是一个ProductFlavor,可根据不同需求生成不同的Apk
* 如果不自定义ProductFlavor进行单独配置,则该productFlavor会采用默认配置生成Apk
* 这些具体配置,如applicationID都是ProductFlavor的属性
*/
defaultConfig {
//配置唯一包名
applicationId "com.manu.androidgradleplugin"
//最低支持的Android系统版本
minSdkVersion 19
//配置应用的目标Android系统版本
targetSdkVersion 26
//用于控制应用升级的版本号
versionCode 1
//用户看到的版本名称
versionName "1.0"
//测试时用到
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
/**
* buildTypes是一个NamedDomainObjectContainer类型,是一个域对象,类似SourceSet(源集)
* buildTypes中可自定义需要构建的类型,Gradle会自动创建一个相应的BuildType,如默认的release、debug
*/
buildTypes {
release {
//设置是否为构建类型启用混淆
minifyEnabled false
//如果启用混淆则使用相应的混淆文件
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
}
}
//依赖配置
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation files('libs/plugin.jar')
}
上述配置文件中已经标注了一些 Android Gradle 插件需要配置的地方,也算是对 Android Gradle 插件及项目配置文件 build.gradle 的一次理解与学习,关于 Android Gradle 插件的基本配置就到此为止,以后陆续补充。
Android Gradle 任务
Android Gradle 插件基于 Android Gradle 插件,Android Gradle 插件中包含了 Java Gradle 插件的一些任务,如 assembile、check、build等任务,此外, Android Gradle 插件还添加一些新任务,如 connectedCheck、deviceCheck、lint、install、unInstall 等 Android 开发特有的任务,可在 Android Studio 上查看 Android 开发中一些任务,选中 Android Studio 右侧标签 Gradle 就可查看,参考如下:
这篇算是初步从学习 Gradle 的角度了解了 Android Gradle 插件相关知识,后面的文章中会继续 Android Gradle 的学习。可以关注公众号:零点小筑(jzman-blog),一起交流学习。
Gradle系列之Android Gradle插件的更多相关文章
- Gradle系列之Android Gradle基础配置
原文发于微信公众号 jzman-blog,欢迎关注交流. 通过前面几篇文章学习了 Gradle 基础知识以及 Gradle 插件相关的知识,关于 Gradle 及其插件相关知识请先阅读下面几篇文章: ...
- Gradle系列之Android Gradle高级配置
本篇文章主要在之前学习的基础上,从实际开发的角度学习如何对 Android Gradle 来进行自定义以满足不同的开发需求,下面是 Gradle 系列的几篇文章: Gradle系列之初识Gradle ...
- Android Gradle 构建工具(Android Gradle Build Tools)是什么?
转载地址:http://mrfu.me/android/2015/07/17/New_Android_Gradle_Build_Tools/ 译者地址:[翻]一览新的 Android Gradle 构 ...
- Gradle系列之认识Gradle任务
原文发于微信公众号 jzman-blog,欢迎关注交流. 前面几篇学习了 Gradle 构建任务的基础知识,了解了 Project 和 Task 这两个概念,建议先阅读前面几篇文章: Gradle系列 ...
- Gradle系列之初识Gradle
原文首发于微信公众号:躬行之(jzman-blog) 学习 Android 有一段时间了,开发中经常使用到 Gradle ,但是不知道 Gradle 构建项目的原理,计划花一点时间学习一下 Gradl ...
- 【Gradle】自定义Android Gradle工程
自定义Android Gradle工程 defaultConfig默认配置 defaultConfig是Android对象中的一个配置项,负责定义所有的默认配置.一个基本的defaultConfig配 ...
- Gradle系列之从零搭建Maven私服库
原文发于微信公众号 jzman-blog,欢迎关注交流. 前面几篇文章学习了 Gradle 相关知识,Gradle 系列文章如下: Gradle系列之初识Gradle Gradle之Groovy基础篇 ...
- 读书笔记--Android Gradle权威指南(下)
前言 最近看了一本书<Android Gradle 权威指南>,收获挺多,就想着来记录一些读书笔记,方便后续查阅. 本篇内容是基于上一篇:读书笔记--Android Gradle权威指南( ...
- 读书笔记--Android Gradle权威指南(上)
本篇文章已授权微信公众号 dasu_Android(大苏)独家发布 最近看了一本书<Android Gradle 权威指南>,对于 Gradle 理解又更深了,但不想过段时间就又忘光了,所 ...
随机推荐
- DB2根据报错代码查看表与字段信息
select * from syscat.tables where tbspaceid='?' and tableid='?' select * from syscat.columns where t ...
- 炼技术(9): 简约而不简单,永不停歇的测试 -- always_run
最强战力,永不停歇的测试:always_run 许多工程师写完程序后,都不愿意对自己的程序做仔细测试. 很多测试说会做自动化测试,可能工作好几年都没真做过多少自动化测试. 我们的解决方案是,在系统的测 ...
- 实战分享丨MySQL 与Django版本匹配相关经验
摘要:关于MySQL 与Django版本匹配相关知识的经验分享. run: (env) E:\PythonPro\PyDjangoProDemo011\xuanyuaniotpro>python ...
- Android 本地缓存Acache的简单使用
设置缓存数据: ACache mCache = ACache.get(this); mCache.put("key1", "value"); //保存6秒,如果 ...
- 实用的git log用法
git log可以很方便地查看日志,可以根据自己需要,将日志按照特定格式显示,或者输出某种格式. 最原始的输出样式: $ git log commit ca82a6dff817ec66f4434200 ...
- Java基础的基础,花1h看这一篇就够了!
------------恢复内容开始------------ Java笔记 一直以来,总想着Java会点基础就可以写后端程序了,但越到后来越发现Java基础的重要性.更不必说在面试时,Java基础 ...
- Linux图形界面安装Oracle11G(Centos7)
以Centos7为列 创建运行Oracle数据库的系统用户和用户组 #切换root用户 [px@localhost /]$ su - root [px@localhost /]$ su - root ...
- Java面试题(设计模式篇+Spring/Spring MVC篇)
设计模式 88.说一下你熟悉的设计模式? 自行熟悉. 89.简单工厂和抽象工厂有什么区别? 简单理解简单工厂:对 一个对象的创建进行封装.抽象工厂:对 一组对象的创建进行封装. 比如生产 陶瓷马 和 ...
- Python和Nose实现移动应用的自动化测试
今天跟大家聊的是Python和Nose实现移动应用的自动化测试,希望对你们有帮助,有说的不好的地方,还请多多指教! 采用Appium进行自动化的功能性测试最酷的一点是,你可以使用具有最适合你的测试工具 ...
- PostgreSQL在不同的表空间移动数据文件
一.背景 在工作中,可能会遇到将表从一个表空间移动另一个表空间.例如 * 对数据进行冷处理 * 表空间所在的磁盘空间不足 * 建表时分配错了表空间 以上等等,可能需要你将一个表移动表空间. 二.表空间 ...