博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android自定义apk名称、版本号自增
阅读量:4067 次
发布时间:2019-05-25

本文共 2593 字,大约阅读时间需要 8 分钟。

自定义apk名称

默认情况下,gradle会打包一个app-release.apk文件,但是在实际应用中没啥用,gradle支持根据需求自定义apk文件名称

设置应用名称在module根目录的build.gradle文件中的这个位置

applicationVariants.all { variant ->        variant.outputs.each { output ->            ......            //setting apk name to what you want            output.outputFile = new File(output.outputFile.parent, "luffy" + "-v" +                    defaultConfig.versionName + "-" + defaultConfig.versionCode + ".apk");        }    }

如上的代码会第一次打包会生成一个 luffy-v1.0-1.apk的文件

apk文件的名称是由new File(P1, P2),这个对象的P2参数决定的,上面的例子中,配置了 luffy+ versionName+versionCode,得到相应的文件名

还可以根据你的需求添加其他的信息,比如时间

// 获取当前系统时间def releaseTime() {    return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"))}// 获取程序名称def getProductName(){    return "gradlesample"}

android{    ......}

标签外,定义函数获取时间和项目名称,用于命名

// 获取当前系统时间def releaseTime() { return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC")) }// 获取程序名称def getProductName(){    return "gradlesample"}android {    ......    // applicationVariants are e.g. debug, release    applicationVariants.all { variant ->        variant.outputs.each { output ->        .....            //setting apk name to what you want            output.outputFile = new File(output.outputFile.parent, defaultConfig.applicationId + "-" + buildType.name + "-v" +                    defaultConfig.versionName + "-" + defaultConfig.versionCode + releaseTime() + "-" + getProductName() + "-" + ".apk");        }    }}

得到com.gradlesample-release-v1.0-32017-09-12-gradlesample-.apk,加上了时间和项目名称

版本号自增

1、 在module的根目录下新建version.properties文件

内容:VERSION_CODE=1

2、 获取本次打包应该使用的版本号

/** * auto increase apk versioncode,and return versioncode * @return */def getVersionCode() {    def versionFile = file('version.properties')    if (versionFile.canRead()) {        def Properties versionProps = new Properties()        versionProps.load(new FileInputStream(versionFile))        def versionCode = versionProps['VERSION_CODE'].toInteger()        def runTasks = gradle.startParameter.taskNames        //仅在assembleRelease任务是增加版本号        if ('assembleRelease' in runTasks) {            versionProps['VERSION_CODE'] = (++versionCode).toString()            versionProps.store(versionFile.newWriter(), null)        }        return versionCode    } else {        throw new GradleException("Could not find version.properties!")    }}

原理就是,每次打包时去 version.properties文件中去读取记录下的versionCode,然后在原来的基础上+1,并覆盖原来的记录,然后返回+1后的versionCode

3、 设置defaultConfig中的versionCode

def currentVersionCode = getVersionCode()    defaultConfig {        ......        versionCode currentVersionCode        ......    }

转载地址:http://illji.baihongyu.com/

你可能感兴趣的文章
linux环境下C语言中sleep的问题
查看>>
ubuntu 12.04 安装 GMA3650驱动
查看>>
新版本的linux如何生成xorg.conf
查看>>
xorg.conf的编写
查看>>
启用SELinux时遇到的问题
查看>>
virbr0 虚拟网卡卸载方法
查看>>
No devices detected. Fatal server error: no screens found
查看>>
新版本的linux如何生成xorg.conf
查看>>
virbr0 虚拟网卡卸载方法
查看>>
Centos 6.0_x86-64 终于成功安装官方显卡驱动
查看>>
Linux基础教程:CentOS卸载KDE桌面
查看>>
hd cdnServer 51cdn / ChinaCache / ATS / Apache Traffic Server
查看>>
project web architecture
查看>>
OS + Unix HP-UX
查看>>
OS + Unix Solaris / openSolaris
查看>>
db sql montior
查看>>
Unix + SCO UnixWare
查看>>
db db2 books
查看>>
read humor_campus
查看>>
my read_soft
查看>>