Gradle配置之自定义APK名称及输出路径。

需求是这样的,我们的项目在上线的时候需要根据公司的明明规则重新对apk文件命名后才能发布到市场上。于是生成的每个apk文件都需要重新命名,如果渠道较少还好说,但是如果多的话就麻烦了。


其实方法很简单,只需要在你的app的Build.gradle文件中添加以下代码就可以了。

android {
    ……//省略部分代码
    applicationVariants.all {
        //判断是release还是debug版本
        def buildType = it.buildType.name
        def fileName
        //下面的channel是获取渠道号,你获取渠道号不一定会和我的代码一样,因为有可能你的渠道名称的规则和我的不一样,我的规则是${渠道名}-${applicationId},所以我是这样取的。
        def channel = it.productFlavors[0].name.split("-")[0]
        //获取当前时间的"YYYY-MM-dd"格式。
        def createTime = new Date().format("YYYY-MM-dd", TimeZone.getTimeZone("GMT+08:00"))
        //只对Release包起作用,如果不是Release包则不变更输出路径,否则可能导致AS无法自动安装debug包。
        if (buildType == "release") {
            it.getPackageApplication().outputDirectory = new File(project.rootDir.absolutePath + "/apks/${it.productFlavors[0].applicationId}/${createTime}")
        }
        it.outputs.each {
            //只对Release包起作用,如果不是Release包则不变更名称。
            if (buildType == "release") {
                //我此处的命名规则是:渠道名_项目名_版本名_创建时间_构建类型.apk
                fileName = "${channel}_项目名称_v${defaultConfig.versionName}_${createTime}-${buildType}.apk"
                //将名字打印出来,以便及时查看是否满意。
                println "文件名:-----------------${fileName}"
                //重新对apk命名。(适用于Gradle4.0以下版本)
                //it.outputFile = new File(it.outputFile.parent, fileName)
                //重新对apk命名。(适用于Gradle4.0(含)以上版本)如果你Gradle版本是4.0以下版本则将上面的一行代码放开并注释下面的这一行。
                it.outputFileName = fileName
            }
        }
    }
    ……//省略部分代码
}

怎么样?上面的代码是不是很简单,只需要把代码拷贝到你的项目中然后响应的地方改成你的就OK了。代码相信大家都能看懂,都是Groovy代码,如果不懂可以去百度一下,教程一堆。

补充一点:上面代码中一句println fileName可能有的同学不知道在哪里查看,这个需要到Gradle Console中去查看。不知道在哪里的看下面的图片:


如果你觉得文章内容对你有帮助请帮忙顶一下,你的支持是对我最大的鼓励。谢谢!!!

这里写图片描述
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,178评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,523评论 25 709
  • 这篇文章讲给大家带来gradle打包系列中的高级用法-自己动手编写gradle插件。我们平常在做安卓开发时,都会在...
    呆萌狗和求疵喵阅读 16,211评论 22 80
  • 找不到的冬日暖阳, 说不出的夏日离殇, 理不清的秋日惆怅, 看不尽的春日茫茫。 看一眼, 过目不忘。 叹一声, 意...
    忍冬独活阅读 1,738评论 1 1
  • 愤怒、伤心、沮丧、无能为力、忧虑,今天一整天都沉浸在这些负面的情绪中而不能自拔,而让我置身于此的元凶竟然是...
    岳Domke阅读 4,079评论 6 2

友情链接更多精彩内容