这篇文章主要为大家展示了“Gradle中如何自定义APK名称与输出路径”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Gradle中如何自定义APK名称与输出路径”这篇文章吧。
成都创新互联公司专注于企业网络营销推广、网站重做改版、公主岭网站定制设计、自适应品牌网站建设、H5开发、商城开发、集团公司官网建设、成都外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为公主岭等各大城市提供网站开发制作服务。
需求
需求是这样的,我们的项目在上线的时候需要根据公司的明明规则重新对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中去查看。不知道在哪里的看下面的图片:
如果你觉得文章内容对你有帮助请帮忙顶一下,你的支持是对我最大的鼓励。谢谢!!!
以上是“Gradle中如何自定义APK名称与输出路径”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!