Android Gradle 自动添加编译时间

查看当前 gradle 版本

当前的 gradle 版本号为:3.4.2(低版本的语法不同,可能编译不过)

在项目文件夹的 build.gradle 文件中可以查到
在这里插入图片描述

现在要做两件事

  • 可以在代码中获取编译时间
  • 打包后自动修改文件名,添加版本号和编译时间

gradle 用的就是 groovy 的语法,所以不懂的,可以去查一下 groovy 的基本用法

代码中获取编译时间

在模块的 build.gradle 中

import java.text.SimpleDateFormat

android {
	defaultConfig {
		//获取编译时间(这里声明了一个BUILD_TIME的变量,groovy 加不加括号和结尾的封号都无所谓)
		buildConfigField("String", "BUILD_TIME", getBuildTime())
		//buildConfigField "String", "BUILD_TIME", getBuildTime()
	}
}

/**
 * 获取编译时间
 */
String getBuildTime() {
    Date date = new Date();
    //中国用的是东八区时间,数值上是在UTC时间上加8
    //String dateStr = "\"" + date.format("yyyy-MM-dd HH:mm:ss", TimeZone.getTimeZone("UTC")) + "\"";
    String dateStr = "\"" + date.format("yyyy-MM-dd HH:mm:ss") + "\"";
    return dateStr;
}

配置好 gradle 并刷新之后,该变量就会自动被添加到 BuildConfig 类中去了 BuildConfig.BUILD_TIME

打包后自动修改文件名,添加版本号和编译时间

groovy的语法和java很像,只是函数有点差别,比如 java 有 lastIndexOf 从末尾开始遍历来获取文件后缀,而groovy则没有该函数,只能通过 indexOf 或者 split 来获取后缀

android {
//release版本输出包名自动追加版本号和版本名称 appName-release_v1.2.1_20191030.apk
    applicationVariants.all { variant ->
            variant.outputs.all { output ->
                //只处理release版本
                //if(buildType.name == 'release') {
                //if(buildType.name.equals('release')) {
                    def createTime = new Date().format("YYYYMMdd", TimeZone.getTimeZone("GMT+08:00"))
                    //output.outputFile是appName-release.apk
                    def name = output.outputFile.name, ext = "";
                    //返回-1表示没找到
                    def dotIndex = name.indexOf(".")
                    if(dotIndex != -1) {
                        ext = name.substring(dotIndex);
                        name = name.substring(0, dotIndex)
                    }
                    outputFileName = name + "_v" + defaultConfig.versionName + "_" + createTime + ext;
                //}
            }
    }
}

在这里插入图片描述

发布了471 篇原创文章 · 获赞 565 · 访问量 188万+

猜你喜欢

转载自blog.csdn.net/chy555chy/article/details/102819604
今日推荐