美文网首页
程序员自我修养之Gradle学习篇

程序员自我修养之Gradle学习篇

作者: 巴菲伟 | 来源:发表于2021-03-22 21:24 被阅读0次

一、Gradle的生命周期

 Settings.gradle : 初始化阶段--> 包含需要你构建其他的参与编译的gradle

 builde.gradle : 配置阶段--> 解析所有build.gradle文件,把它转换为Gradle的Project的对象,分析Project的下面的Task任务之间的依赖关系,生成有向无环拓扑图

 Task :  执行阶段--> 执行Task任务,Gradle会根据依赖决定哪些会被执行,以及执行顺序

        this.beforeEvaluate{}       :   开始配置前调用

        this.afterEvaluate{}          :  配置完成后调用

        this.gradle.buildFinish{}    :  task执行完后调用

二、project的相关api的讲解

getAllprojects   : 获得项目中所有的project

getSubprojects : 获得项目中所有子的project

getParent : 获得当前的project父的project

getRootProject : 获取根结点的project

project('app' ) { } : 对app的project的工程进行修改

allprojects { } : 对当前工程的project和它所有的子project进行配置

subprojects { } : 只包含子工程进行配置

//在gradle配置时候就可以通过android2这个方法扩展参数

project.extensions : project.getExtensions();  

//这个是在Piugin里面去写的东西

Android2  android2 = project.extensions.create("android2", Android2.class);

android2对象就可以调用上面配置的信息

下面是在build.gradle里面去写

android.getApplicationVariants().all { }

this.android.application.Variants (遍体): 它是遍历为什么版本 : debug、huidu 、release

三、属性的相关api的讲解

ext { }  : 拓展属性,可以把变量全部定义在这个里面

在gradle.properties文件里面定义变量去使用

四、文件属性的相关api的详解

getRootDir().absolutePath  : 获取根工程的目录

getBuildDir().absolutePath  : 获取build的目录

getProjectDir().absolutePath : 获取当前project的目录

copy { from 源文件    into  目的文件}  :  从源文件拷贝到目的文件

exclude  :  排除库之间的冲突

transitive :  禁止传递依赖,默认为false

五、task常见使用属性

task.execute() :  执行某个task任务

inputs.property()、inputs.properties()  :  task的文件输入inputs

outputs : task的文件输出

六、task任务图的使用方法

task的创建方式一

task创建方式二

task创建方式三

doFirst和doLast的执行顺序

七、builde里面常用参数

        buildConfigField :   在BuildConfig里面设置参数

        productFlavors : 多渠道打包参数

        sourceSet : 指定源码目录、资源目录

八、gradle去解析一个xml文件

        1.创建XmlParser对象: def xmlparser = new XmlParser()

        2.解析xml

            文件: xmlparser.parse(xmlfile.xml)

            字符串: xmlparser.parseText('<xml></xml>')

        3.读取属性:使用groovy.util.Node.attribute('attribute')

九、远端依赖源码

       1. setting.gradle加入

            include':locatenavi'        

            project(':locatenavi').projectDir =new File('../../LocateProject/locate/locatenavi')

        2. build.gradle加入依赖工程

            implementation project(':locatenavi')

./gradlew :app(module名字):dependencies : 查看某块之间的依赖

相关文章

网友评论

      本文标题:程序员自我修养之Gradle学习篇

      本文链接:https://www.haomeiwen.com/subject/bpmthltx.html