一. 打开项目选择如图示1 (build.gradle 项目位置)

二. 1. build.gradle 文件添加内容如下。gradle是【com.android.tools.build:gradle:3.0.0 以下版本

android{   defaultConfig {...}   自动追加版本号和版本名称  android.applicationVariants.all {    variant->variant.outputs.each {      output-> output.outputFile = new File(output.outputFile.parent,"app_device_v"+defaultConfig.versionName+"_"+new Date().format("yyyy-MM-dd")+"_"+buildType.name+".apk")    }  }}

output.outputFile.parent 可以指定输出到指定文件夹

2. build.gradle 文件添加内容如下。 gradle是【com.android.tools.build:gradle:3.0.0及其以上版本

android{   defaultConfig {...}   //release版本输出包名自动追加版本号和版本名称  applicationVariants.all {    variant ->      variant.outputs.all {        //只处理生产版本        if (buildType.name == 'release') {          def createTime = new Date().format("YYYY-MM-dd", TimeZone.getTimeZone("GMT+08:00"))           // app包名称          outputFileName = "app_v" + defaultConfig.versionName + "_" + createTime + "_" + buildType.name + ".apk"          ////指定release输出到指定文件夹          variant.getPackageApplication().outputDirectory = new File(config.appReleaseDir + "/${createTime}")        }      }  }}  

三. 打包查看结果:图示3(直接点击assembleRelease即可)

补充知识:Android编译gradle 动态修改版本号

在构建代码的时候不想每次都修改版本号,需能够增加一个功能在特定的条件下动态的修改版本号

在manifest里面加入占位符号

修改build.gradle

import com.google.gson.Gsonclass Version {  int versionCode  String versionName}def versionJsonFile = file('./version.json')//这个文件最好放一个所有项目人员都能够访问的地方  def versionJsonObject = new Gson().fromJson(versionJsonFile.text, Version.class)  android.applicationVariants.all {    variant ->      println("variants name : " + variant.name)  //只有满足特定条件的情况下才会版本自增一,这个可以看看各个项目的特定配置      if (variant.name.toLowerCase().contains("ceshirelease") ) {        println("variants name : versionCode " + versionJsonObject.versionCode + "versionname: " + versionJsonObject.versionName)        versionJsonObject.versionCode = versionJsonObject.versionCode + 1        int lastIndexPoint = versionJsonObject.versionName.lastIndexOf(".")        String newStr = versionJsonObject.versionName.substring(0, lastIndexPoint)        println("newStr" + newStr)        versionJsonObject.versionName = newStr + "." + versionJsonObject.versionCode        println("versonJsonStr.versionName " +  versionJsonObject.versionName)      }  //这句是核心,可以调整版本号和版本明,修改了这个会影响到BuildConfig.class里面的属性      variant.mergedFlavor.versionCode = versionJsonObject.versionCode      variant.mergedFlavor.versionName = versionJsonObject.versionName  //如果没有加下面这句,当应用安装后会出现应用信息没有版本号的问题,这个必须有      variant.mergedFlavor.manifestPlaceholders.put("versioncode", versionJsonObject.versionCode)      variant.mergedFlavor.manifestPlaceholders.put("versionname", versionJsonObject.versionName)  }  //为了记住最新的版本号,是需要进行文件的回写的,什么时候回写会好一点 //个人认为只有当打包apk的动作执行成功后 回写文件记录的版本号最优  afterEvaluate {    project ->      gradle.taskGraph.afterTask {        task, taskState ->    //这里如果assembleceshirelease 就具体的打包的变种项目,各个应用肯定不一样,需要调整下          if (task.name.toLowerCase().contains("assembleceshirelease") && taskState.getFailure() == null) {            println("try assemble ceshi release" )   //回写文件操作            versionJsonFile.withPrintWriter { out ->                out.println(new Gson().toJson(versionJsonObject))            }          }      }  }

给apk重新命名也是同样的道理

      variant.getOutputs().all {        File file = it.outputFile;        println(" file property file.canRead() " + file.canRead() + " file.canWrite " + file.canWrite())        String pathString = file.getPath();        println(" path String : " + pathString + " File.pathSeparator: " + File.separator)   //指定最终输出的文件的目录和名字        pathString = file.getParent() + File.separator + "test.apk";        println(" path pathString : " + pathString)        file.renameTo(pathString)      }

以上这篇android studio 打包自动生成版本号与日期,apk输入路径详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

更多相关文章

  1. 一款常用的 Squid 日志分析工具
  2. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  3. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  4. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  5. Android(安卓)product="tablet" or "phone" 设置
  6. Android开发常用调试技术记录
  7. [置顶] cocos2d-x android 编译 iconv库
  8. Android学习笔记(四) 之模拟发短信
  9. Android(安卓)使用setContentView来实现Acitivity的跳转

随机推荐

  1. Android(安卓)动画机制(一)
  2. 【Android】音乐播放器边播边缓存(三)Andro
  3. Android忘记密码功能实现
  4. 【Android(安卓)对话框(Dialog)大全 建立
  5. android 调用系统相机拍照 获取原图
  6. 飞利浦 V808 android
  7. 隆重推出:Android(安卓)KTX 预览版让 Kotl
  8. Android(安卓)适配心得
  9. 懒骨头的Android文档备份3:一个简单的交互
  10. Android使用ViewDragHelper实现简单的vie