gradle脚本中groovy语法讲解


一、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"))
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值