Android grade语法,多渠道打包


文章目录

  • Android grade语法,多渠道打包
  • 一、groovy语法
  • 二、自动打包切换测试正式环境
  • 三、gradle多渠道打包
  • 总结

一、groovy语法

以下代码需要 在build.grade文件中操作,具体打印日志在build中查看

//字符串拼接
task StringText{def str1 = "woshishuangyinhao"def str2 = "woshidanyinhao"println str1+str2
}//集合
task list{def list = [1,2,3,4,5]println list[0]list.each {println it}for (int i in 1..5){println list[i]}
}task map{def map = ["name":"jeck","age":19]println(map["name"])map.each {println("key:${it.key},value:${it.value}")}
}//定义一个方法  计算两数之和
task method{println(methodA(2,3))println(methodBean())
}def methodA(int a,int b){a+b
}def methodBean(){//groovy默认只返回最后一行的结果Student student = new Student()student.name = "hahahh"student.age = 1215415
}
//定义一个对象 ,在groovy没有私有一说,都能被调用
class Student{String nameint ageString getName() {return name}void setName(String name) {this.name = name}int getAge() {return age}void setAge(int age) {this.age = age}
}
//测试闭包
task closure{mEach{println(it)}
}
//闭包--》回调或者 钩子 在groovy只对{}里面的有效,Closure
def mEach(closure){for (int i in 1..5){closure(i)}
}

打印如下

二、自动打包切换测试正式环境

1.配置baseurl
在对应文件中分别配置url:
baseUrl = “https://www.debug.com”
baseUrl = “https://www.release.com”

2.在gradle中编写读取文件方法:

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

打印测试:

buildTypes {debug{println getServerUrl("debug")}release {println getServerUrl("release")}}


3.配置读取配置方法

buildTypes {debug {//三个参数 1 数据类型  2 变量名 3 变量值buildConfigField 'String','url',getServerUrl('debug')}release {buildConfigField 'String','url',getServerUrl('release')}
}

然后clean +rebuild project项目,然后会自动生成一个如下的类:


public final class BuildConfig {public static final boolean DEBUG = Boolean.parseBoolean("true");public static final String APPLICATION_ID = "com.rb.renbin.agradledemo";public static final String BUILD_TYPE = "debug";public static final String FLAVOR = "huawei";public static final int VERSION_CODE = 1;public static final String VERSION_NAME = "1.0";// Field from product flavor: huaweipublic static final String PLATE_FROM = "huawei";// Field from build type: debugpublic static final String url = "https://www.debug.com";
}

4.然后获取里面的url配置到请求base就行了,这样打包和编译运行就会自动切换正式环境和测试环境了

String baseurl =  BuildConfig.url;

三、gradle多渠道打包

1.先创建自己的签名文件
2.配置签名

//签名配置
signingConfigs{release{keyAlias 'arouter'keyPassword '123456'storeFile file('app/arouter.jks')storePassword '123456'}
}//自动打包切换域名 用groovy读取配置文件
buildTypes {debug {//三个参数 1 数据类型  2 变量名 3 变量值buildConfigField 'String','url',getServerUrl('debug')}release {buildConfigField 'String','url',getServerUrl('release')//混淆minifyEnabled true// 配置签名signingConfig signingConfigs.release//包的输出}
}

3.在defaultConfig配置渠道code

defaultConfig {applicationId "com.rb.renbin.agradledemo"minSdkVersion 23targetSdkVersion 30versionCode 1versionName "1.0"testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"//多渠道包codeflavorDimensions "versionCode"
}

4.配置渠道号

productFlavors{xiaomi{buildConfigField 'String','PLATE_FROM','xiaomi'}yingyongbao{buildConfigField 'String','PLATE_FROM','yingyongbao'}huawei{buildConfigField 'String','PLATE_FROM','huawei'}
}

或者

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

5.输出包,配置打包输出方法

release {buildConfigField 'String','url',getServerUrl('release')//混淆minifyEnabled true// 配置签名signingConfig signingConfigs.release//包的输出  渠道+时间+版本号android.applicationVariants.all { variant ->variant.outputs.all { output ->  // each 改为 alldef fileName = "${getCurrentTime()}_V${defaultConfig.versionName}_release.apk"def outFile = output.outputFileif (outFile != null && outFile.name.endsWith('.apk')) {outputFileName = fileName  //  output.outputFile 改为 outputFileName}}}
}def  getCurrentTime(){return new Date().format("yyyy-MM-dd",TimeZone.getTimeZone("UTC"))
}

6.gradle多渠道打包
在terminal下执行 gradlew assemble 打包指令

或者在这里选择自己需要的渠道打包也可以

打包如下:


总结

Android grade语法,多渠道打包相关推荐

  1. android多渠道打包插件,Android几种多渠道打包的步骤详解

    1.什么是多渠道打包 在不同的应用市场可能有不同的统计需求,需要为每个应用市场发布一个安装包,这里就引出了Android的多渠道打包.在安装包中添加不同的标识,以此区分各个渠道,方便统计app在市场的 ...

  2. android中的多渠道打包,Android 多渠道打包简析

    前言 为了更好的统计每个来源的下载量,当我们项目打包的时候,需要打出不同渠道的包.如何打多渠道包?新一代构建工具gradle,其中的一大优势就是支持多渠道,多Apk打包. Gradle的基础概念 fl ...

  3. android 友盟统计动态设置渠道,Android 友盟多渠道打包

    一.简介 为了统计不同渠道上的下载数量及用户活动情况,方便后台做运营统计.我们需要在安装包中添加不同的标识(渠道信息 Channel).多渠道的实现方式多种多样,此篇只实现友盟多渠道打包的方法.友盟多 ...

  4. android百度多渠道打包,Android Stuido 实现多渠道打包

    之前在这篇文章http://blog.csdn.net/zouchengxufei/article/details/46486629里涉及到根据不同的平台打包多个的问题,又在这篇文章http://bl ...

  5. android 友盟多渠道打包工具,Android渠道打包最佳实践(以友盟为例)

    渠道包是每一个Android产品面临的问题,国内几乎每个手机厂商都有自己的安卓市场,导致需要的渠道包非常多,很多app的渠道都达到了丧心病狂的几百个,每次打渠道包都是一个痛苦的过程. 多渠道打包方案 ...

  6. android开发 Gradle多渠道打包以及集成360加固

    先上图 先说实现的目的 主要是 用脚本做渠道打包 然后在APP里面添加数据 在启动时读取数据上传服务器做统计 然后为啥要这么做:第一个是因为APP里面在做渠道包的时候 需要加特定的东西,区别这些APP ...

  7. Android使用walle多渠道打包

    转载:https://github.com/Meituan-Dianping/walle Walle 瓦力,Android Signature V2 Scheme签名下的新一代渠道包打包神器 瓦力通过 ...

  8. android studio gradle 多渠道打包配置

    2019独角兽企业重金招聘Python工程师标准>>> 在Gradle中配置输出不同的渠道包 项目中遇到做个笔记,废话没有直接上代码: buildTypes {release {// ...

  9. 使用build.grade文件配置相关参数与多渠道打包

    使用build.grade文件配置相关参数与多渠道打包 晨鸣的博客–使用build.grade文件配置相关参数与多渠道打包 使用build文件配置相关参数 在Android开发过程中,有时我们需要在A ...

最新文章

  1. 目标10亿部?苹果AR眼镜有望明年登场!传搭载Mac级处理器、4K显示屏
  2. 发那科冲压直线搬运机器人_行业应用 | 直线七轴软件配置
  3. RC电路输出波形的时域与频域分析
  4. wdnas群晖nas_西数WD NAS红盘 WD140EFFX 14TB HDD和 SA500 1TB SSD开箱拆解评测
  5. 越努力越幸运--动态数组vector
  6. 按键精灵saystring无法使用的几种解决方案
  7. SetTimer OnTimer WM_TIMER
  8. VS Code创建C项目
  9. putty提示Network error:Software caused connection abort
  10. u盘怎么重装系统win11教程
  11. 关于移动平台的viewport
  12. RTL8305NB傻瓜式交换机无法工作
  13. minimax算法_使用Minimax算法玩策略游戏
  14. 27_ArrayList类
  15. 图片从前端回传到后端实现思路总结
  16. 导出Excel—外部表不是预期的格式
  17. 技术分享 | ClickHouse StarRocks 使用经验分享
  18. Golang 浮点数运算 避免精度损失 Decimal包
  19. 三年java经验面试总结,整理了一些java面试题供参考
  20. caffe创建网络_Caffe2-创建自己的网络

热门文章

  1. perl处理获取指定日期
  2. windows dos 命令 内部 外部
  3. 计算机毕业设计android老年人监护系统APP(源码+系统+mysql数据库+Lw文档)
  4. WordPress 开发带缩略图的小工具最新文章
  5. HSSF 读取excel
  6. 【python基础教程】python常见的运算符及用法
  7. 力扣解题思路:670. 最大交换/parseInt和valueOf的区别
  8. 面试官问我:Andriod为什么不能在子线程更新UI?
  9. 每周一文(三)阿里ESMM模型
  10. 是的那是假的是说不定还是是哪毒神殿