栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

gradle脚本中groovy语法讲解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

gradle脚本中groovy语法讲解

文章目录
  • 一、build的生命周期(Glide脚本的生命周期)
  • 二、gradle命令
  • 三、gradle的三种对象
  • 四、groovy语法
    • 1.字符串拼接
    • 2.List
    • 3.map
    • 4.定义一个方法
    • 5.定义一个对象
    • 6.闭包
    • 7.环境
    • 8.打签名包
    • 9.打多个渠道包(友盟)


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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1028493.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号