gradle脚本中groovy语法讲解

Groovy语言的调试工具 Groovy是一种基于Java平台的动态语言,具有简洁语法、丰富的API以及强大的集成能力,能够与Java无缝互操作。Groovy支持面向对象编程、函数式编程和元编程,提供了许多Java中比较繁琐的功能,使得开发变得更加高效。正因如此,Groovy被广泛应用于开发领域,包括Web开发、自动化测试、构建工具等。 阅读详情


一、build的生命周期(Glide脚本的生命周期)

初始化期:initialization—>配置期:configuration—>执行期:execution
生命周期


二、gradle命令

执行打包命令,首先找到你所在module的目录,

可以打成APK也可以打成aar,你如果只有一个app就到app下,执行如下命令

(1)gradle clean

(2) gradle assembleDebug

(3)gradle assembleRelease


三、gradle的三种对象

gradle主要有三种对象:

  • Gradle对象:构建初始化时创建,整个构建执行过程中只有这么一个对象,一半很少去修改这个默认配置脚本
  • Settings对象:每个settings.gradle都会转化成1一个Settings对象
  • Project对象:每个build.gralde都会转换成一个Project对象

四、groovy语法

1.字符串拼接

 def str1 = "aaa"
 def str2 = 'bbb'
 println(str1+str2)
 println "$(str1)$(str2)

2.List

def list = [1,2,3,4,5]
println list[0]
//遍历
list.each{
    //每一个元素可以用it表示
    println it
}
for(int i in 1..5){
    println list[i]
}

3.map

def map = ['name':'jack','age':19]
println map['name']
map.each{
    println "key:${it.key},value:${it.value}"
}

4.定义一个方法

def methodA(int a,int b){
    a+b
    //gradle默认将最后一行非空行(有代码行)作为结果返回
}

5.定义一个对象

//groovy没有私有这一说
class Student{
     String name
     int age

     String getName() {
        return name
    }

     void setName(String name) {
        this.name = name
    }

     int getAge() {
        return age
    }

     void setAge(int age) {
        this.age = age
    }
}

6.闭包

//测试闭包
task closure{
    mEach {
        println it
    }
}

//闭包-》钩子或者接口,在gradle只对{}里面有效,Closure
def mEach(closure){
    for(int i in 1..5){
        closure(i)
    }
}

7.环境

//用groovy语法读取配置文件
def getServerUrl(String str){
    def url;
    Properties properties = new Properties()
    def proFile = file('src/main/filters/'+str+"/config.properties")
    if(proFile.canRead()){
        properties.load(new FileInputStream(proFile));
        if(properties!=null){
            url = properties['SERVER2']
        }
    }
    url
}

//签名
    buildTypes {
        //测试环境,一个域名
        debug{
            //                数据类型  变量名  变量值
            buildConfigField 'String','url',getServerUrl("debug")
            //通过buildConfigField放到java中
        }
        //生产环境 ,另一个域名
        release {
            buildConfigField 'String','url',getServerUrl("release")
            //混淆
            minifyEnabled true
            signingConfig signingConfigs.release
            //包的输出  渠道+时间.apk
            android.applicationVariants.all{
                variant ->
                    variant.outputs.all{
                        def fileName = "${getCurrentTime()}_V${defaultConfig.versionName}_release.apk"
                        outputFileName = fileName
                    }
            }
        }
    }

8.打签名包

//签名配置
    signingConfigs{
        release{
            keyAlias 'key0'
            keyPassword '123456'
            storeFile file('demo.jks')
            storePassword '123456'
        }
    }

9.打多个渠道包(友盟)

打不同的渠道包,投放到不同的应用市场

 //多渠道包的code
 flavorDimensions "versionCode"

    //打多个渠道包,友盟,自己统计,
    //1、打不同的渠道包,然后投放到不同的平台或者是应用市场
    //2、在java中取不同的值去统计

    //最原始的多渠道打包
    productFlavors{
        xiaomi{
            buildConfigField 'String','PLATE_FROM',"\"xiaomi\""
        }
        qh360{
            buildConfigField 'String','PLATE_FROM',"\"qh360\""
        }
        /*

         */
        baidu{
            buildConfigField 'String','PLATE_FROM',"\"baidu\""
        }
    }

    //一键化多渠道打包

    productFlavors{
        xiaomi{}
        qh360{}
        baidu{}
    }

    productFlavors.all {
        flavor ->
            buildConfigField "String","PLATE_FROM","\"${name}\""
    }
}

 def getCurrentTime(){
    //java中生成当前时间 2021-08-16_21_59_59
    return new Date().format("yyyy-MM-dd",TimeZone.getTimeZone("UTC"))
}

开发groovy plugin、编译时注解时调试技巧 我们在开发Android plugin、编译注解、groovy脚本的时候,都可以参照该文章的方案调试代码。 阅读详情

相关推荐

Android之项目中如何用好构建神器Gradle?

Gradle虽为构建神器,但感觉学习曲线比较陡峭。Gradle User Guide内容很多,但有点太多了,多的你看不完,Gradle Plugin User Guide一篇文章主要讲了Android相关的配置,看完可能感觉马马虎虎会用,但到了修改一些构建流程的时候还是不知所措。经过一段时间的摸索,我觉得在Android项目中用好Gradle,你要做到以下三点: 了解Groovy基本语法

码莎拉蒂 1713

Java中嵌套Groovy语言debug调试测试

1. 编写测试脚本 (TestGroovy.groovy) 文件: 内容: import com.google.common.collect.Maps; /** * @description: 大汉软件测试类 * @author: gmj * @create: 2022-08-09 * */ String test = test(); println("test: " + test)...

土木转行的人才博客 930

Outlook日历同步全攻略:Win10+安卓+iOS三端无缝衔接(附常见问题解决)

本文提供了一份详尽的Outlook日历同步指南,帮助用户在Windows 10、安卓和iOS三端实现无缝衔接。文章深入解析了Exchange ActiveSync等核心同步原理,并给出了从账户创建到各设备(特别是华为手机)的具体配置步骤、进阶管理技巧以及针对同步失败、事件重复等常见问题的实战解决方案,旨在彻底解决跨平台日程管理的痛点。

l3m4n的博客 551

groovy使用

要使用groovy脚本 第一步:添加pom文件的依赖 <dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy-all</artifactId> <version>2.4.9</version> </

zzuhai的博客 975

SAP ABAP VL09 BAPI VL 216

ls_batch_item-fact_unit_denom = ls_lips_split-umvkn. "销售数量转换为 SKU 的值(分母)ls_batch_item-fact_unit_nom = ls_lips_split-umvkz. "销售数量转换成SKU的分子(因子)ls_batch_item-sales_unit_iso = ls_lips_split-meins. "被拆分DN基本单位。

ChampaignWolf的专栏 2299

Isaac Gym环境安装和四足机器人模型的训练

该方法提出一种训练模式,该模式通过在单个GPU工作站上使用大规模并行的方法来实现现实世界机器人任务的快速控制策略的生成。

weixin_44061195的博客 3万+

【Groovy】字符串 ( 字符串拼接 | 多行字符串 )

一、字符串类型变量、 二、多行字符串、 三、完整代码示例、

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 9637

【LAMMPS学习】五、LAMMPS命令(8) Pair_style 势

所有LAMMPS pair_style命令如下表所示。有些样式有加速版本。这由括号中的附加字母表示:g = GPU, i = INTEL, k = KOKKOS, o = OPENMP, t = OPT。

荷塘阅色 3016

Gradle 系列 (一)、Gradle相关概念理解,Groovy基础

Gradle相关概念理解,Groovy基础

QG 743

Raspberry Pi Pico SDK开发-Timer-定时

RP2040 由 Raspberry Pi 设计,具有双核 Arm Cortex-M0+ 处理器和 264KB 内部 RAM,并支持高达 16MB 的片外闪存。 广泛的灵活 I/O 选项包括 I2C、SPI 和独特的可编程 I/O (PIO)。 本实例将演示如何使用Timer的定时功能。

视觉与物联智能 2040

【招商银行笔试题汇总】[全网首发]2024-04-23-招商银行春秋招笔试题-三语言题解(CPP/Python/Java)

🏳️ 难难难!!!本次招商银行的笔试算是今年春招最难的场次之一了K小姐所在的公司有 NNN 个部门,编号从 111 到 NNN。由于公司网络系统比较老旧,对于同一个数据 ddd,不同部门记录的值可能不同。数据 ddd 在各部门被记录为 d1,d2,...,dNd_1, d_2, ..., d_Nd1​,d2​,...,dN​。公司提出可以通过会议来实现数据的一致性。每次会议会让相邻编号范围内的所有部门一起参加,如果有超过半数的部门能够对数据 ddd 的值达成共识,那么在此次会议后,参与会议的所有部门会将

春秋招笔试突围 3462

【Gradle】Groovy的语法详解(1/2)

Gradle之所以在项目构建的过程中很强大,其中很大一部分原因就是在于Groovy。Grooovy是Java平台上设计的一种强大的、可选类型和动态的语言。Groovy可以无缝地集成任何Java程序,并立即让你的应用程序拥有强大的特性,包括脚本功能、DSL、运行时和编译时元编程和函数式编程。 也就是说,相比较于通过Maven等来进行项目构建,它可以更灵活多变地实现更加复杂的功能。 本文实例源码git...

Yngz_Miao的博客 9260

【SemiDrive源码分析】【X9芯片启动流程】11 - freertos_safetyos目录Cortex-R5 DIL2.bin 引导程序源代码分析

【SemiDrive源码分析】【X9芯片启动流程】11 - freertos_safetyos目录Cortex-R5 DIL2.bin 引导程序源代码分析

|~~~热爱生活、努力学习的小伙汁~~~| 2108

Gradle入门(一)--Groovy常用语法

概述 Groovy是一种可以用于构建的DSL,基于Jvm支持所有的Java语法,同时又对Java进行了扩展,提供了大量的语法糖去简化我们的代码。在开发中既能像Java一样用面向对象的方式编写,也能像脚本一样用面向过程的方式编写。而本篇我们主要介绍Groovy在Gradle脚本中常用的语法,如果你想知道更多可以到官网查看http://groovy-lang.org/。 在开始之前你需要装好Java和...

朱利源的博客 844

【TCAD】AlGaN 器件的Sentaurus仿真

否则,必须在 LatticeParameters Sentaurus Device 的参数文件中的部分。Sentaurus Device 有两个工具实例:第一个工具实例, sd_fdiv ,模拟正向偏置特性,第二个工具实例, sd_rviv ,模拟反向偏置特性直至击穿。对于牛顿求解器,通常应该将非线性迭代次数限制为一个足够小的值,例如 Iterations=20 ,同时通过指定非阻尼迭代次数高于允许的牛顿迭代次数来避免解的阻尼( NotDamped=30 )。晶胞中的 Ga-N 键为橙色。

荷塘阅色 1213

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Gradle相关概念理解,Groovy基础

gradle基础和相关概念

woailinqingxia的博客 233

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

groovy 入门

为了更好地使用gradle,我觉得有必要先来入门一下groovy。 什么是groovy groovy是一门面向对象敏捷开发语言,和java一样也是运行在jvm上的。所以groovy支持所有java语法,在此基础上也有一些自己的特性。他可以单独作为脚本语言来使用也可以像java一样使用。 我理解,他作为gradle的脚本语言也就是因为他可以作为脚本语言来构建项目。这点很灵活。 新建gr...

maybe的博客 724

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Gradle新手指南

本文通过探索Groovy脚本的语法来更好地理解Gradle项目中的build.gradle文件

码农无双的博客 677

Gradle和Maven仓库介绍

image.png Gradle 介绍 Gradle是一个基于JVM的构建工具,是一款通用灵活的构建工具,支持maven, Ivy仓库,支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件,基于Groovy,build脚本使用Groovy编写。 Gradle不单单是一个配置脚本,它的背后是几门语言,如果硬让我说,我认为是三门语言。 Groovy Langua...

u012739527的博客 584

【Gradle:新一代构建工具】学习笔记 2 Gradle与IDEA整合 2.3 Groovy中基本语法说明

【Gradle:新一代构建工具】学习笔记 2 Gradle与IDEA整合 2.3 Groovy中基本语法说明

代码改变世界 428

Gradle学习笔记(一)-Groovy

Groovy学习 Groovy是一种基于JVM虚拟机的动态语言,groovy完全兼容java,又在java的基础上增加了很多动态类型和灵活的特性,比如闭包,DSL等。 Groovy学习 使用assert查错 可选类型定义 可选的括号 字符串 集合API List Map 命名参数 闭包 在Gradle构建脚本中使用Groovy 关键字 使用assert查错 ...

liuhedev的博客 4362

Java构建工具Gradle和Idea整合

Groovy简介与安装使用摘要 Groovy是一种运行在JVM上的动态脚本语言,可视为Java的改良版,完全兼容Java语法。主要特点包括支持动态类型、闭包、元编程、函数式编程,以及简洁的DSL语法。安装可从官网下载,验证版本后即可使用。 在IDEA中创建Groovy项目时,推荐使用Gradle Wrapper解决环境依赖问题,通过gradle init初始化项目并指定版本。Gradle Wrapper会自动下载和管理所需Gradle版本,确保构建一致性。

zxb的博客 1002

攻克Groovy核心语法,彻底看懂Gradle构建脚本不再难

Gradle作为Java/Android生态中主流的自动化构建工具,其脚本语言Groovy常被初学者误认为是简单的配置格式。实际上,Groovy是一门运行在JVM上的动态语言,支持变量动态推断、灵活的字符串插值、简洁的集合操作以及闭包等核心特性,这些构成了Gradle DSL的基础。理解闭包与方法调用的省略规则,是解读build.gradle中大量花括号代码的关键。从基础语法切入,结合批量任务创建、属性动态配置等工程实践,能显著提升构建脚本的可读性与排查报错的能力。无论你是想优化镜像源配置、处理AGP版本升

weixin_31310913的博客 138

Gradle tip #2: understanding syntax

In the Part 1 we talked about tasks and different stages of the build lifecycle. But after I published it I realized that before we jump into Gradle specifics it is very important to understand what w...

weixin_30696427的博客 86

【Gradle:新一代构建工具】学习笔记 2 Gradle与IDEA整合 2.8 Groovy中的闭包

【Gradle:新一代构建工具】学习笔记 2 Gradle与IDEA整合 2.8 Groovy中的闭包

代码改变世界 378

Gradle这么差还来面腾讯?

码个蛋(codeegg)第 638 次推文作者:厘米姑娘原文:https://www.jianshu.com/p/1274c1f1b6a4前言在使用Android Studio过程中没少...

陈宇明 455
上一篇: Glide使用及原理分析
下一篇: Android中图片的裁剪与压缩
浮空over
博客等级 码龄7年 6粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值