Android gradle学习(一)

2 篇文章 0 订阅
2 篇文章 0 订阅

Android gradle学习(一)

1、gradle配置

gradle如果在非Android环境需要额外配置。

如果配置了brew ,可以直接用命令行安装。十分简便

brew install gradle

完成后用gradle -v查看是否安装成功

gradle -v

如果没有配置的话可以看一下brew的配置https://zhuanlan.zhihu.com/p/111014448

或者按照网上教程进行gradle配置就不多说了。

2、初用gradle

先来简单模仿写一段hello world

创建一个名叫build.gradle的文件,如下所示

task hello{
	doLast{
		println'hello world!'
	}
}

终端跳转到文件所在的目录,输入

 gradle -q hello

可以看到输出,完成了我们的第一行代码hello world。

hello world!

现在来分析上述的代码。

首先我们创建了一个build.gradle的文件。默认情况下gradle的文件都是build.gradle

第一行task hello定义了一个名叫“hello”的task。在这个task中打印了hello world。

命令行中输入 gradle -q hello 代表执行hello这个任务。-q代表控制gradle的日志级别,用于过滤日志。

假如直接输入

gradle hello

将会输出

> Task :hello
hello world!

BUILD SUCCESSFUL in 820ms
1 actionable task: 1 executed
任务和项目

在gradle中,每个build.gradle都代表一个项目,如Android中每一个module都是一个项目。一个项目中有多个Task。而每个Task中又有多个action。这个action类似于java的方法。上面的hello是任务,doLast是action

生命周期

一个gradle的构建通常有三个阶段

初始化:项目实例在这个阶段创建。

配置:构建脚本会在这个阶段创建,会为每个项目创建构建和配置任务。

执行:gradle在这个阶段将决定哪个任务会被执行。

3、Gradle Wrapper

是对gradle的包装,用于团队开发过程中避免大家gradle版本不统一而导致的问题。可以通过gradle wrapper统一gradle的版本。我们在开发过程中,通常都是使用的gradle wrapper,而不是自己去官网下载对应gradle版本的zip,然后配置到本地。

当使用wrapper时,会检查对应gradle有没有被下载,如果没有回自动去下载并构建环节。因此不需要开发人员自己手动去配置。

(1)生成wrapper

在项目的根目录输入gradle wrapper,会生成几个文件。

gradle/wrapper文件夹下面包含gradle-wrapper.jar gradle-wrapper.properties两个文件。

gradle-wrapper.properties是用来配置gradle的属性,使用的是哪个版本的gradle。jar包是用来具体操作的。

gradlew和gradlew.bat分别是linux和window下的可执行脚本。

(2)wrapper配置

当使用gradle wrapper生成相关文件的时候,可以指定一些参数来控制wrapper的属性,比如gradle的版本等。

如使用

gradle -wrapper --gradle-version 2.4

生成的gradle wrapper就使用的是2.4版本的gradle。它会影响gradle-wrapper.properties中distributionUrl的值,这个值是用来下载gradle的url。

(3)gradle-wrapper.properties

这个是gradle wrapper的配置文件。打开文件可以看到,它里面包含了以下属性。

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
属性名含义
distributionBase下载的gradle解压后存储的主目录
distributionPath相对于distributionBase的相对路径
zipStoreBase同distributionBase,只是存储的压缩包
zipStorePath同distributionPath,只是存储的压缩包
distributionUrl下载地址
(4)自定义wrapper task

回忆一下之前我们是如何生成wrapper,在命令行输入以下命令

gradle wrapper

这个输入和我们之前gradle hello执行task一样。所以我们可以猜测wrapper也是一个task的名字,用来生成wrapper的文件。

在build.gradle增加如下的task

task wrapper(type:Wrapper){
	gradleVersion = '2.4'
}

除了gradleVersion以外,还可以配置上面的属性。

task wrapper(type:Wrapper){
	gradleVersion = '2.4'
  distributionBase = 'GRADLE_USER_HOME'
  distributionPath = 'wrapper/dists'
  distributionUrl = 'https\://services.gradle.org/distributions/gradle-2.4-all.zip'
  zipStoreBase = 'GRADLE_USER_HOME'
  zipStorePath = 'wrapper/dists'
}

4、gradle日志

(1)gradle的日志

和Android日志系统类似,也按照一定的等级分类,用于过滤自己想要的日志。

前面我们gradle -q就是用来过滤q以上的代码。

日志级别如表所示

级别用于
ERROR错误消息
QUIET重要消息
WARNING警告消息
LIFECYCLE进度消息
INFO信息消息
DEBUG调试信息

默认是输出LIFECYCLE以上的消息

(2)输出错误堆栈信息

gradle还支持类似编译器输出异常堆栈 默认情况下堆栈输出是关闭的。可以通过-s或者-S。

-s:输出关键性堆栈信息

-S:输出全部堆栈信息

(3)自定义日志输出

通常情况下,我们可以print系列的方法输出,它的日志级别是QUIET

除了print系统方法以外,还可以使用logger做更灵活的日志输出。

logger.quiet() logger.error() logger.warn()

5、gradle命令

(1)获取帮助
./gradlew -?
./gradlew -h
./gradlew -help
(2)查看所有可执行的Task
./gradlew tasks

gradle会以分组的方式列出Task列表。

(3)强制刷新依赖

刷新缓存

./gradlew --refresh-dependencies assemble	
(4)多任务调用

用空格隔开

(5)通过任务名字缩写执行

如果名字过长,为此通过驼峰的缩写调用

connectCheck 使用时可以用 cc代替

./gradlew cc

6、groovy

(1)字符串

双引号和单引号都可以表示字符串,区别在与单引号代表纯粹的字符串常量,而双引号可以做运算。

task hello{
	doLast{
		def name = '张三'
		println '${name}'
		println "${name}"
	}
}

输出

${name}
张三

可见单引号内的表达式都是字符串常量,而双引号可以做计算。

此外双引号内的表达式格式为${表达式},只有一个变量时可以省略花括号

(2)集合

groovy也提供了类似java中集合的功能

List

task hello {
	doLast{
		def list = [1,2,3,4,5,6]
		println list[0]//访问第一个元素
		println list[-1]//访问最后一个元素
    println list[0..3]//访问第1到第4个元素
    }
}

此外还提供了each的遍历

list.each{
	println it
}

Map

task hello {
	doLast{
		def map = ['width':1024,'height':768]
		println map.width//有两种打印的方式
		println map['height']
		
		map.each{
				println "Key:$it.key,Value:$it.value"
			}
    }
}

注意map的key只能是字符串

7、方法

(1)括号可以省略

groovy中方法的调用可以省去括号

比如fun(“1”,“2”)可以直接写成fun"1",“2”

(2)return可以不写

如果没有return 默认将最后一行代码作为返回值。

(3)代码块是可以作为参数传递

例如 刚刚的each方法实际上就是代码块作为参数传入

map.each{
				println "Key:$it.key,Value:$it.value"
}
map.each{(println "Key:$it.key,Value:$it.value")}	
(4)省略get、set方法

在类中可以省略getset方法,而直接调用private属性

task hello {
  Person p = new Person()
  p.name='张三'
  println "name = $p.name"
  println "age = $p.age"
}
class Person{
  private name
  public int getAge(){
		12
  }
}

此外还可以不定义一个成员变量,而直接通过设置getset方法而调用。如上面的age

8、闭包

(1)闭包的定义

闭包其实一段代码块

task hello {
   customEach{
   		println it
   }
}
def customEach(closure){
	for(int i in 1..10){
		closure(i)
	}
}

这里我们定义了一个方法 参数是一个闭包代码块。使用这个闭包就是后面加括号。这里也就是相当于

def customEach(closure){
	for(int i in 1..10){
			println i
	}
}
(2)闭包参数

如果闭包只有一个参数,那么默认就是it,换句话说也就是i=it

当有多个参数时,需要把参数一一列出,如

task hello {
   customEach{k,v->
   		println "key=$k,value=$v"
   }
}
def customEach(closure){
	def map=["name":"张三","age":18]
	map.each{
		closure(it.key,it.value)
	}
}
(3)闭包委托

Closure有三个属性 thisObject、owner、delegate。

thisObject相当于java中的this,指向闭包定义所在的类。

owner 指向闭包定义所在的类或者闭包

delegate,默认情况下等于owner。可以修改指向。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 《Android Gradle权威指南》是一本介绍如何使用Gradle构建Android应用程序的权威指南。本书详细介绍了Gradle的基本概念、构建脚本的编写、依赖管理、多模块构建、构建变体、构建优化等方面的内容。对于想要深入了解Gradle构建Android应用程序的开发者来说,这本书是一本非常好的参考书籍。 ### 回答2: 《Android Gradle权威指南》是一本详细介绍了Android Gradle构建系统的权威指南。Gradle是一种基于Groovy语言的构建自动化工具,而Android Gradle是针对Android应用开发的定制版本。 该指南从基础概念、Gradle的安装和配置开始介绍,随后介绍了Gradle构建脚本的语法和结构。读者将学会如何编写Gradle脚本以管理项目依赖、构建和打包Android应用。 此外,《Android Gradle权威指南》还深入介绍了Gradle的高级功能,如多模块项目管理、变体构建、构建缓存、增量构建等。读者将可以通过使用这些高级功能提高构建效率和减少构建时间。 该指南还对Android Gradle插件的特性进行了解释和演示。它详细介绍了如何使用插件进行代码混淆、资源压缩、构建变体等。此外,读者还能学到如何定制构建过程,处理不同环境和变体。 总的来说,《Android Gradle权威指南》是一本全面而深入的Gradle学习指南,适合已有Gradle基础的Android开发者。通过阅读本书,读者将能够更好地理解和使用Gradle构建系统,以及优化和自定义Android应用的构建过程。 ### 回答3: 《Android Gradle权威指南》是一本介绍如何使用Gradle构建Android应用程序的权威性参考书。Gradle是一种功能强大的构建工具,广泛应用于Android开发中,它以脚本方式定义构建过程,提供了高度灵活性和可扩展性。 这本书首先介绍了Gradle的基本概念和特点,包括项目结构、任务和依赖管理。然后,它深入解析了在Android开发中使用Gradle的各个方面。书中包含了大量实用的示例代码和详细的操作步骤,帮助读者更好地理解和掌握Gradle的使用。 《Android Gradle权威指南》的内容覆盖了Android项目的各个方面,包括构建类型、变体、签名、多模块项目、任务定制等。此外,它还介绍了如何使用Gradle进行自动化测试、发布和持续集成,以及如何优化构建速度和性能。 这本书的优点在于它权威而全面地介绍了Android开发中Gradle的使用,从基础知识到高级技巧都有涉及。同时,作者对相关概念和原理进行了深入讲解,使读者能够更好地理解Gradle的内部工作原理。 总之,对于想要更好地掌握GradleAndroid开发中的应用的开发者来说,《Android Gradle权威指南》是一本非常有价值的参考书。无论是初学者还是有一定经验的开发者,都能从中获得实用的技巧和知识,提升在Android开发中的效率和质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值