首页 > 系统 > Android > 正文

Gradle配置教程之自定义APK名称与输出路径

2019-10-22 18:14:06
字体:
来源:转载
供稿:网友

前言

接触Android Stuidio有一阵子了,之前用的时候有很多小问题,不过现在的版本感觉已经很好用了,所以准备彻底从Eclipse转战Android Stuidio,这段时间把以前经常使用的公用库都从Eclipse移植过来了,今天研究了一下在Android Studio下进行打包签名之类的操作,其实主要是研究Gradle了,以前没有用过Gradle,但是早就耳闻Gradle是非常强大的构建系统,经过一天的奋战,现在整理记录下,以供大家参考和以后查阅。

需求

需求是这样的,我们的项目在上线的时候需要根据公司的明明规则重新对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名称,apk输出路径,自定义方法

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对VEVB武林网的支持。


注:相关教程知识阅读请移步到Android开发频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表