首页 > 学院 > 开发设计 > 正文

使用gradle实现批量修改生成的apk文件名

2019-11-09 15:37:24
字体:
来源:转载
供稿:网友

在我们一次性打几十个渠道包的时候,如果我们想让打包完成的apk文件名按照我们想要的格式来命名,比如明确的apk的版本号,打包日期,那个渠道的包等等,这时就需要使用gradle的Variants属性来动态修改生成的apk文件名

在app(module)目录下的build.gradle文件内加入如下代码:

def buildTime() { def date = new Date() def formattedDate = date.format('yyyy-MM-dd', TimeZone.getTimeZone("UTC")) return formattedDate}android { ...... buildTypes { release { ...... applicationVariants.all { variant -> variant.outputs.each { output -> def outputFile = output.outputFile if (outputFile != null && outputFile.name.endsWith('.apk')) { // 输出apk名称为AppName_v1.0_2015-01-15_wandoujia.apk def apkFile = "AppName_v${defaultConfig.versionName}_${buildTime()}" + "_${variant.PRoductFlavors[0].name}.apk" output.outputFile = new File(outputFile.parent, apkFile) } } } } }}

以wandoujia渠道为例,上面代码最终打包生成的apk文件名是AppName_v1.0_2015-01-15_wandoujia.apk 而且该用法可以和./gradlew assemableRelease命令结合使用,两者结合使用可以自动生成各个渠道的动态apk名

接下来分析一下,由于Android的gradle任务比较复杂,为了让gradle能更灵活的控配置管理,Android提供了applicationVariants、libraryVariants以及testVariants三种Variants,他们分别适用于app、 library、app和library

这里是循环处理每个applicationVariant,当他们的输出文件名以apk结尾并且buildType是release时,重新设置新的输出文件名,这样就达到了我们批量修改生成的文件名的目的

参考: http://www.flysnow.org/2015/03/30/manage-your-android-project-with-gradle.html


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表