![](https://img-blog.csdnimg.cn/20201103094043339.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Android Gradle
文章平均质量分 54
Android Gradle
假装你是大灰狼
移动端工程师
展开
-
Android Gradle学习(八) 统计Task执行时长
关于 Gradle 的基本知识,前面章节已经讲的差不多了。那么,我们现在来牛刀小试一下,看看 Gradle 有什么用武之地。我们在将 Android 应用程序打包成 apk 包时,有时会发现整个 build 过程特别长,短则 1、2 分钟,长则大几分钟甚至更长,特别是你要进行调试时,漫长的等待会让人很焦躁。我们在控制台可以看到整个打包过程包含很多个 task ,那么到底是哪些 task 的执行花...转载 2019-11-27 17:53:10 · 1248 阅读 · 2 评论 -
Android Gradle学习(七) Gradle构建生命周期
Gradle 进行构建,都要经过3个生命周期阶段:初始化阶段配置阶段执行阶段Gradle 提供了很多生命周期监听方法,可以在各个阶段 Hook 指定的任务。1. ProjectProject 提供的生命周期回调方法有://在 Project 进行配置前调用void beforeEvaluate(Closure closure)//在 Project 配置结束后调用void ...转载 2019-11-27 17:43:19 · 1169 阅读 · 0 评论 -
Android Gradle学习(六) NamedDomainObjectContainer详解
第一次看到 NamedDomainObjectContainer 的时候,让我迷惑了好一阵子,这到底是个什么玩意?现在让我们来揭开它神秘的面纱,看看它到底是什么,有什么作用。1. NamedDomainObjectContainer的使用场景前面在讲解 Gradle Extension 的时候,说到名为 android 的 Extension 是由 BaseExtension 这个类来实现的,...转载 2019-11-27 17:08:06 · 2097 阅读 · 0 评论 -
Android Gradle学习(五) Extension详解
前面我们已经详细讲解了 Gradle 的 Task、Project 等基本用法,现在我们还要学习一个很重要的概念 Extension,它在 Gradle 中几乎随处可见,特别是在 Android 打包配置中。1. 什么是Extension我们先来看一段 Android 应用的 Gradle 配置代码:android { compileSdkVersion 26 default...转载 2019-11-27 17:03:14 · 2828 阅读 · 0 评论 -
Android Gradle学习(四) Project详解
每一个 build.gradle 脚本文件被 Gradle 加载解析后,都会对应生成一个 Project 对象,在脚本中的配置方法其实都对应着 Project 中的API,如果想详细了解这些脚本的配置含义,有必要对 Project 类做些深入的剖析。1. Project类图当构建进程启动后,Gradle基于build.gradle中的配置实例化org.gradle.api.Project类,先...转载 2019-11-27 16:21:03 · 2394 阅读 · 0 评论 -
Android Gradle学习(三) Task进阶学习
前面通过很多范例讲了在 build.gradle 中怎么创建 Task,但是 Task 到底是个什么东西,它里面有些什么,我们并不清楚,本文试图揭开 Task 神秘的面纱。1. Task类图Gradle 所说的 Task 是 org.gradle.api.Task 接口,默认实现是 org.gradle.api.DefaultTask 类,其类图大概如下(只节选了比较重要的部分):我们只需...转载 2019-11-27 11:10:05 · 1690 阅读 · 0 评论 -
Android Gradle学习(二) 如何创建Task
一个 Task 是 Gradle 里项目构建的原子执行单元,Gradle 通过将一个个Task串联起来完成具体的构建任务,每个 Task 都属于一个 Project。关于 Task 的具体定义可查看官方文档Gradle Task API。1. 在Gradle里定义Task在 build.gradle 里可以通过 task 关键字来创建Task:task myTasktask myTask ...转载 2019-11-26 18:05:07 · 1644 阅读 · 0 评论 -
Android Gradle学习(一) Gradle基础入门
现在的Android应用都是采用Android Studio来开发的,AS默认是采用Gradle作为构建工具的。通常开发者可以不需要理解任何Gradle的脚本配置,就可以开发出一个APP。但是,当你想做一些更智能的操作时,比如修改打包后的输出目录、提高打包速度等等,就必须对Gradle有比较深入的了解。Gradle脚本是基于Groovy语言来编译执行的,在这之前最好要对Groovy语言有所了解。...转载 2019-11-26 18:02:35 · 915 阅读 · 0 评论 -
Android Groovy 动态(十三)
首先申明下,本文为笔者学习《Groovy 程序设计》的笔记,并加入笔者自己的理解和归纳总结。1. 动态访问访问属性class AGroovyClass { int value = 10}obj = new AGroovyClass()pName = "value"println obj["value"] // 10println obj.value // 10pr...原创 2019-10-11 16:29:45 · 273 阅读 · 0 评论 -
Android Groovy 注入(十二)
首先申明下,本文为笔者学习《Groovy 程序设计》的笔记,并加入笔者自己的理解和归纳总结。1. 分类注入use()方法注入Groovy使用use()来注入方法,但该方法必须是静态的,并且第一个参数必须是目标对象。 class IntegerUtil { // 如果想要限制为Integer类型,可以使用isEven(Integer self) def stat...原创 2019-10-10 14:50:20 · 564 阅读 · 0 评论 -
Android Groovy 对象和方法拦截(十一)
首先申明下,本文为笔者学习《Groovy 程序设计》的笔记,并加入笔者自己的理解和归纳总结。1. Groovy对象在一个Groovy应用中,使用三类对象,POJO(普通Java对象)、POGO(Groovy对象,实现GroovyObject接口)和Groovy拦截器(实现GroovyInterceptable)。GroovyObject接口package groovy.lang;p...原创 2019-10-09 17:58:59 · 442 阅读 · 0 评论 -
Android Groovy 调用(十)
首先申明下,本文为笔者学习《Groovy 程序设计》的笔记,并加入笔者自己的理解和归纳总结。1. Groovy调用脚本groovy脚本文件hello.groovy。println "Hello World!" // Hello World!输入groovy hello.groovy可以调用该脚本也可像java一样先进行编译,生产hello.class文件。groovyc hello....原创 2019-10-09 08:59:11 · 590 阅读 · 0 评论 -
Android Groovy Json解析和构建(九)
首先申明下,本文为笔者学习《Groovy 程序设计》的笔记,并加入笔者自己的理解和归纳总结。1. JsonBuilder构建people = new Expando(name:"Jack", addr:"ShangHai")people.phone = [131111111, 132111111] // Listpeople.expr = [java:2, groovy:1] // Map...原创 2019-10-09 08:52:58 · 783 阅读 · 0 评论 -
Android Groovy XML解析和构建(八)
首先申明下,本文为笔者学习《Groovy 程序设计》的笔记,并加入笔者自己的理解和归纳总结。1. XmlParser解析XML可以解析xml文件,也可以解析字符串。 def persons = new XmlParser().parse("persons.xml")或者 xmlStr = """ <persons> <person name="...原创 2019-10-08 13:38:32 · 640 阅读 · 0 评论 -
Android Groovy 线程(七)
首先申明下,本文为笔者学习《Groovy 程序设计》的笔记,并加入笔者自己的理解和归纳总结。1. Start方法Groovy中,调用Thread的静态方法start()来创建线程。def printThreadInfo() { Thread currentThread = Thread.currentThread() println "Current Thread is ${...原创 2019-10-08 13:37:19 · 1039 阅读 · 0 评论 -
Android Groovy 闭包(六)
首先申明下,本文为笔者学习《Groovy 程序设计》的笔记,并加入笔者自己的理解和归纳总结。闭包是Groovy的特性之一,类似于Java中的匿名内部类,但功能更加强大。1. 闭包应用一般用法 def filter(array, block) { for (val in array) { block(val) } } iarray ...原创 2019-10-08 10:19:47 · 523 阅读 · 0 评论 -
Android Groovy 集合(五)
首先申明下,本文为笔者学习《Groovy 程序设计》的笔记,并加入笔者自己的理解和归纳总结。1. 动态类型Groovy方法属于动态类型,只有在调用时才会检查。可以调用respondsTo()方法来检查是否存在该方法。class Rectangle { void draw() { println "Rectangel draw" }}class Circl...原创 2019-09-30 23:13:34 · 259 阅读 · 0 评论 -
Android Groovy 字符串(四)
首先申明下,本文为笔者学习《Groovy 程序设计》的笔记,并加入笔者自己的理解和归纳总结。1. for-each循环。使用冒号形式的for循环,必须指定name的类型。 names = ["Michael", "James", "Kavin", "Steven"] for (String name : names) { println name }返回 M...原创 2019-09-30 23:12:02 · 311 阅读 · 0 评论 -
Android Groovy 属性和方法(三)
首先申明下,本文为笔者学习《Groovy 程序设计》的笔记,并加入笔者自己的理解和归纳总结。1. Groovy属性Groovy中声明了一个属性,系统会自动生成get和set方法。class Car { def speed = 10}Car car = new Car()println car.speed // 10println car.getSpeed() // 10...原创 2019-09-30 16:47:13 · 698 阅读 · 0 评论 -
Android Groovy 特殊语法(二)
首先申明下,本文为笔者学习《Groovy 程序设计》的笔记,并加入笔者自己的理解和归纳总结。1. 多赋值Groovy可以返回一个数组,然后赋值给左侧表达式。左侧表达式必须以逗号分隔,放在圆括号中。 def splitName(fullname) { fullname.split(',') } (firstName, lastName) = splitName("Mi...原创 2019-09-30 16:46:01 · 511 阅读 · 0 评论 -
Android Groovy 安装环境(一)
1. Java安装下载地址http://www.oracle.com/technetwork/java/javase/downloads/index.html设置环境变量 JAVA_HOME=C:\Program Files\Java\jdk1.8.0_25 CLASSPATH=.:%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.ja...原创 2019-09-30 16:42:28 · 554 阅读 · 0 评论