1、Android Studio2.3中

android.applicationVariants.all { variant ->    variant.outputs.each { output ->        def file = output.outputFile        def filename = "*****.apk"        output.outputFile = new File(file.parent, filename)    }}

fileName 赋想定义的文件名,格式为apk————>”名+.apk”

output.outputFile就是将导出(生成)的文件通过

output.outputFile = new File(file.parent, filename)

将定义的命名new 一个File赋给outputFile

android.applicationVariants.all { xixi ->    xixi.outputs.each { output ->        def file = output.outputFile        def filename = "****.apk"        output.outputFile = new File(file.parent, filename)    }}

注意:

android.applicationVariants.all { xixi ->    xixi.outputs.each { output ->        def file = output.outputFile        def filename = "****.apk"        output.outputFile = new File(file.parent, filename)    }}

  1. android.applicationVariants.all 是固定写法,换成android.applicationVariants.each——是不会其效果的
  2. variant.outputs.each换成variant.outputs.all——是不能”Sync Now”(或Sync Project with Gradle File)成功(variant对象名可以改) 
  3. variant这个相当于是ApplicationVariants的一个对象,可以随意定义对象名字,例如上面改成“xixi”
  4. 同理:output是属于BaseVariantOutput的对象,对象名也可以随意定义

2、Android Studio3.0中

写法简单了。

android.applicationVariants.all { variant ->    variant.outputs.all {        outputFileName = "*****.apk"    }}

注意: 
1. android.applicationVariants.all同样 
2. variant.outputs.all换成variant.outputs.each是不能”Sync Now”(或Sync Project with Gradle File)成功(variant对象名可以改)

3、代码位置:

AndroidStudio2.3和3.0的代码放的位置是一样的。 
app的Build.gradle中的

android{    ......    android.applicationVariants.all{        ......    }}

说明:代码的位置是与android{}中的defaultConfig{}同一层的

4、用法升级:

名字修改方法

使用${...}里面传入对象 
例如:outputFileName = "***${versionName}.apk"——得到的是“名+版本.apk” 
可以多个${...}

以下是我在项目中使用的:

  • 增加日期/时间

    def date = new Date().format(“yyyyMMddHHmmss” , TimeZone.getTimeZone(“GMT+08”)) 
    def date = new Date().format(“yyyyMMddHHmmss” , TimeZone.getTimeZone(“Asia/Shanghai”))

    1. 当然解析(format)中yyyyMMddHHmmss可以换成其他,如yyyyMMdd、yyMMdd……等等,用法和Java里面一样
    2. TimeZone.getTimeZone()这是获取时区日期时间,传入GMT+08Asia/Shanghai会准确的中国时间,看到网上都是传UTC——这个问题是日期对,但是时间不对。 
    3. TimeZone.getTimeZone()的用法

同理:outputFileName = "***${date}_${versionName}.apk"

  • 加入判断区分debug和release

用于区分debug和release的两种不同的名字:

if(variant.buildType.name.equals('debug')){    .....}

if(variant.buildType.name.equals('release')){    .....}

最终用法

android.applicationVariants.all { variant ->    variant.outputs.all {        //def date = new Date().format("yyyyMMdd" , TimeZone.getTimeZone("Asia/Shanghai"))        def date = new Date().format("yyyyMMdd" , TimeZone.getTimeZone("GMT+08"))        if(variant.buildType.name.equals('debug')){            outputFileName = "****${date}_${versionName}.apk"        }        if(variant.buildType.name.equals('release')){            outputFileName = "****${date}_${versionName}.apk"        }    }}

更多相关文章

  1. 利用Android的Log 演示一个activity的生命周期
  2. android之AutoCompleteTextView控件用法
  3. Android入门之SeekBar
  4. Android(安卓)okhttp使用
  5. Viewpager Indicator中PagerSlidngTab用法(与ViewPager一起使用)
  6. android 使用xml制作背景图片(shape的用法)
  7. 三、mono for android 学习:参考书籍
  8. android 中限制EditText 最大输入字符数
  9. Android(安卓)之 EditText属性用法介绍

随机推荐

  1. 偷学Python完整版下载与声明
  2. 程序员30岁前月薪达不到30K,该何去何从
  3. Python正则表达式的运用与常用的正则表达
  4. Webpack 4正式发布!从0配置到生产模式,你需
  5. js中基础数据结构数组去重问题
  6. 混合内容下的浏览器行为 [每日前端夜话(0
  7. 偷学Python第五天|循环结构,附练习案例
  8. 我在北京前端面试那些事!
  9. 聊聊 Array 中的一个小坑 [每日前端夜话(
  10. 手把手教你使用Pygame制作飞机大战小游戏