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 理解又更深了,但不想过段时间就又忘光了,所 ...
随机推荐
- 浏览器自动化的一些体会5 webBrowser控件之winform和webBrowser的交互
从winform访问webBrowser,大致就是利用webBrowser提供的解析dom的方法以及用InvokeScript方法执行javascript.这个相对比较简单. 从webBrowser访 ...
- 在我们使用Redis作为一个LRU缓存的时候,怎么做才能更高效
当用Redis作为一个LRU存储时,有些时候是比较方便的,在你增添新的数据时会自动驱逐旧的数据.这种行为在开发者论坛是非常有名的,因为这是流行的memcached系统的默认行为. LRU实际上只是支持 ...
- 要点4:C的文件操作
关于文件操作个人比较困惑的地方有两点: 关于w和wb的区别 如何定位文件的读写位置 文件格式和打开模式 c中的文件打开模式分为:文本模式和二进制模式,分别处理文本格式文件和二进制格式文件. 两个模式的 ...
- 一篇文章快速搞懂Qt文件读写操作
导读:Qt当中使用QFile类对文件进行读写操作,对文本文件也可以与QTextStream一起使用,这样读写操作会更加简便.QFileInfo可以用来获取文件的信息.QDir可以用于对文件夹进行操作. ...
- java23种设计模式——三、工厂模式
源码在我的github和gitee中获取 工厂模式 工厂模式介绍 工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式.著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在J ...
- 一次完整的JVM堆外内存泄漏故障排查记录
前言 记录一次线上JVM堆外内存泄漏问题的排查过程与思路,其中夹带一些JVM内存分配机制以及常用的JVM问题排查指令和工具分享,希望对大家有所帮助. 在整个排查过程中,我也走了不少弯路,但是在文章中我 ...
- oracle备份之备份测试脚本(冷备、热备、rman)
1.数据库环境 数据库DBID及打开模式SQL> select dbid,open_mode from v$database; DBID OPEN_MODE---------- -------- ...
- Linux下关闭和开启IPv6的方法
确认IPV6是否开启 在Linux下确认IPv6是否已经被启用,可以从三个方面确定. 1.使用ifconfig查看自己的IP地址是否含有IPv6地址. eth0 Link encap:Ethernet ...
- Mysql性能参数优化
1.Max_connections (1)简介 Mysql的最大连接数,如果服务器的并发请求量比较大,可以调高这个值,当然这是要建立在机器能够支撑的情况下,因为如果连接数越来越多,mysql会为每个连 ...
- Mac 安装多个版本jdk
JDK默认安装路径为/Library/Java/JavaVirtualMachines 多版本安装后效果为: 设置 1.执行以下命令 cd ~ open -e .bash_profile #打开.ba ...