9、初识Gradle基本用法

一、gradle是什么?

	1、gradle是一个灵活高效且支持多语言多平台的构建工具。是一款最新,功能最强大的构建工具。
	优势:
	1)使用程序代替了传统的xml配置,项目构建更灵活
	2)有丰富的第三方插件库。完善android,java开发技术体系,提升自动化构建技术深度。可以把gradle看成一个编程框架。
	3)使用ant,maven等构建的程序,可以使用gradle编译,反之则不一定能行。
	4)gradle的运行机制细致化到每一个task,可以追溯源码,查看所有的任务执行细节。
	2、最初使用groovy作为语言,从5.0开始支持kotlin的dsl,优点是支持多种仓库,易扩展高性能。

二、安装gradle

	1)直接下载解压,里面每个文件夹可以挨个打开看一下,其中bin文件里存放的就是gradle可执行脚本,linux下的和windows下的。
	2)通过包管理工具sdkman:sdk install gradle,homebrew:brew install gradle
	3)gradle wrapper:每个gradle工程可以灵活配置gradle版本,无需手动下载安装,配置版本即可自动下载,

三、认识gradle工程

	1)gradle安装目录在.gradle/wraper/dists/ 有许多版本存在里面,这只是将许多不同的版本进行管理。真正运行的是在gradle工程的根目录下,有两个文件,一个是gradlew一个是gradlew.bat,这代表在linux下和windows下执行的两个文件,他们两个负责去找下载的gradle。
	2)根目录下build.gradle是根工程配置文件,决定工程是怎么构建的,包括:仓库到底在哪里,有哪些编译器插件等;gradle.properties是gradle的属性配置文件,键值对,值会添加到project当中;setting.gradle文件则是gradle工程初始化配置文件,决定着哪些module要加入编译
	3)allproject下面配置的repositories,和buildscript下面的repositories,有何区别呢?allproject下面配置的repositories:它的作用范围是所有的module,意味着所有module下面build.gradle里面所配置的dependencies里的依赖插件,都是去这个repositories里的仓库里去查找。buildscript下面的repositories:它的作用范围只是buildscript里面的repositories依赖插件所要查找的仓库。而这里面配置的插件,是用于所有的module,比如apply plugin:"com.android.application",这种在每个module下面的build.gradle里都配置得有的插件,都是来自于buildscript下面的dependencies配置。那么每个module里都会有一个android{},这个就是来自于插件"com.android.application"
	4)自定义自己的任务:比如我们可以在app module里的gradle里面建立自己的任务。
task helloWorld(group:"custom"){
    
    
		println("hello")

		doLast{
    
    
			println("world")
		}
	}
其中helloWorld是这个任务的名称。custom是分组,就是这个任务是建立在哪个分组,也就是哪个目录下面。doLast是真正执行这个task时才执行的任务。而println("hello")则是在sync时就会执行的代码,只有在执行helloWorld这个任务时才会真正的执行doLast里面的任务。

四、sync异常

	1、gradle下载不下来,怎么办?
	当我们在执行sync的时候,gradle wrapper会根据我们所配置的版本号,在.gradle/wrapper/dists下面生成相对就的版本文件夹,比如我测试时使用的是gradle-6.7-bin.zip这个版本,那么wrapper就会生成一个gradle-6.7-bin的文件夹,并在下面下载gradle-6.7-bin.zip包,如果下载失败,里面会存在两个缓存文件gradle-6.7-bin.zip.lck和gradle-6.7-bin.zip.part。既然因为网络或其它原因下载不成功,那么我们可以百度或通过其它手段去下载gradle-6.7-bin.zip文件并放在两个缓存文件同目录下,并且删除两个缓存文件,再到工程中sync一下,此时就会发现工程不会再去下载,而是正常把包给解压缩了。

黄色框里面是下载失败的文件,需要删除。

	2、依赖包下载不成功怎么办?
	根据我上面讲的dependencies所去找的对应的仓库,既然JCenter()、mavenCentral()等仓库都在国外,不好使,那么我们就自定义呗,比如自已公司有的仓库,或者我们直接百度阿里去的代理仓库就可以实现飞一般的速度。
maven{
    
    
	url:"https://maven.aliyun.com/repository/central"
}
	具体的仓库地址,去阿里官方找吧:https://maven.aliyun.com/mvn/guide

	3、sync老是失败,怎么查找问题呢?
	一般情况下,失败会出现明确错误提示的。但是如果没有明确的错误提示,我们就使用命令行进行debug,比如:./gradlew --debug执行此命令,打印出所有的debug信息。然后查看具体的错误代码位置。

作者:沧水巫云
博客:http://blog.csdn.NET/amir_zt/
以上原创,转载请注明出处,谢谢。
https://blog.csdn.net/amir_zt/article/details/112977343

猜你喜欢

转载自blog.csdn.net/u011635351/article/details/112977343
今日推荐