当前位置:网站首页>gradle脚本中groovy语法讲解
gradle脚本中groovy语法讲解
2022-08-02 03:27:00 【浮空over】
文章目录
一、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"))
}
边栏推荐
- 库存现金、现金管理制度、现金的账务处理、银行存款、银行存款的账务处理、银行存款的核对
- C language uses stack to calculate infix expressions
- 文件包含漏洞
- Cookie is used to collect the admin privileges CTF foundation problem
- CTF-Neting Cup Past Topics
- [Hello World教程] 使用HBuilder和Uni-app 生成一个简单的微信小程序DEMO
- php laravel框架生成二维码
- 不懂“赚钱逻辑”,你永远都是社会最底层(广告电商)
- 关于我的大创、论文~
- 完整安装 Laravel-Admin 框架
猜你喜欢
随机推荐
英语每日打卡
战场:3(双子叶植物)vulnhub走读
快速搭建一个网关服务,动态路由、鉴权的流程,看完秒会(含流程图)
uniapp | Problems with the use of the official map component
大厂底层必修:“应用程序与 AMS 的通讯实现”
redis未授权访问(4-unacc)
同态加密:CKKS原理之旋转(Rotation)
The CTF introduction of PHP file contains
Gradle源码解析:生命周期的三个阶段
财产清查概述、 全面清查的情况、局部清查的情况、财产清查的方法、财产清查结果的处理
Summary of php function vulnerabilities
DNS详解
laravel-admin FROM表单同行展示问题
Larave 自定义公共函数以及引入使用
(不重点考)试算平衡的分类
关于我的项目-微信公众号~
How to log in to Alibaba Cloud server using the admin account
英语每日打卡
VIKINGS: 1 vulnhub walkthrough
Kotlin - 延迟初始化和密封类









