频道栏目
首页 > 程序开发 > 移动开发 > Android > 正文
Android Studio修改生成Apk命名
2018-01-08 02:10:48      个评论    来源:Jys_05的博客  
收藏   我要投稿

Android Studio修改生成Apk命名

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

Android studio2.3修改Apk命名

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”))

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

\

点击复制链接 与好友分享!回本站首页
上一篇:Android Studio如何生成签名
下一篇:Android组件化介绍
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站