当前位置:网站首页>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"))
}
边栏推荐
猜你喜欢

Google Hacking

laravel 查询数据库获取结果如何判断是否为空?

管理会计(对内)指引、管理会计要素及其具体内容(可能考,考前记一下,推荐记一下四个大点即可)、

大厂底层必修:“应用程序与 AMS 的通讯实现”

面试必备:Android性能分析与优化实战进阶手册

(2) Sequence structures, Boolean values of objects, selection structures, loop structures, lists, dictionaries, tuples, sets

【泰山众筹】模式为什么一直都这么火热?是有原因的

命令执行漏洞

PHP deserialization vulnerability

How to determine the direction based on two coordinate points on the map
随机推荐
The learning path of a network security mouse - the basic use of nmap
Activity
hackmyvm-hopper预排
快速搭建一个网关服务,动态路由、鉴权的流程,看完秒会(含流程图)
敏感信息泄露
laravel 写api接口时 session获取不到处理办法
管理会计(对内)指引、管理会计要素及其具体内容(可能考,考前记一下,推荐记一下四个大点即可)、
Anaconda报错:An unexpected error has occurred. Conda has prepared the above report 解决办法
ES6 three-dot operator, array method, string extension method
The first time to tear the code by hand, how to solve the problem of full arrangement
[Hello World教程] 使用HBuilder和Uni-app 生成一个简单的微信小程序DEMO
Sensitive information leakage
重点考:金融资产概述、交易性金融资产的概念、交易性金融资产的账务处理(取得、持有。出售)、
Windows下MySQL数据库报“ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost:8000‘ (10061)”错误解决
2021-09-04 最简单的Golang定时器应用以及最简单的协程入门儿
Debian 12 Bookworm 尝鲜记
SATA M2 SSD 无法安装系统的解决方法
不懂“赚钱逻辑”,你永远都是社会最底层(广告电商)
元宇宙是一个炒作的科幻概念,还是互联网发展的下半场?
学IT,找工作——移除链表元素