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

前言

接触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中去查看。不知道在哪里的看下面的图片:

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

总结

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

(0)

相关推荐

  • android gradle如何修改生成的apk名字

    前言 说实话,我在大法工作的时候,就见过Gradle.但是当时我一直不知道这是什么东西.而且大法工具组的工程师还将其和Android Studio大法版一起推送,偶一看就更没兴趣了.为什么那个时候如此不待见Gradle呢?因为我此前一直是做ROM开发.在这个层面上,我们用make,mm或者mmm就可以了.而且,编译耗时对我们来说也不是啥痛点,因为用组内吊炸天的神机服务器完整编译大法的image也要耗费1个小时左右.所以,那个时侯Gradle完全不是我们的菜. 现在,搞APP开发居多,编译/打包等

  • Android如何在Gradle中更改APK文件名详解

    前言 本文主要给大家介绍了关于Android在Gradle中更改APK文件名的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 默认情况下,Android Studio中的Gradle构建命名为.apk文件app-release.apk.对应用程序build.gradle文件进行了一些小的更改,可以将.apk名称更改为<app name>-release-<version>.apk. 需要在app的目录下面修改build.gradle文件. 第一步是将pro

  • Gradle编译打包Android apk详细介绍

    Gradle编译打包Android apk详细介绍 理解Gradle构建过程,解读Android Gradle插件的配置 阅读本文一定是要使用过Gradle生成apk,文中不会讲如何安装运行Gradle,如有需要可先看文末的参考文章. APK包是一个ZIP压缩包,从Java源代码.资源文件到生成这个APK,经过了编译打包一系列特定的过程,SDK文档(/docs/tools/building/index.html)中找到.而这一系列特定的过程,重复繁琐,构建工具(build tool)就是来流程化

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

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

  • 史上最全的Android build.gradle配置教程

    前言 Android Studio是采用gradle来构建项目的,gradle是基于groovy语言的,如果只是用它构建普通Android项目的话,是可以不去学groovy的.当我们创建一个Android项目时会包含两个Android build.gradle配置详解文件,如下图: 一.Project的build.gradle文件: 对应的build.gradle代码如下: // Top-level build file where you can add configuration optio

  • Android Studio多渠道打包、自定义打包APK名称

    现在为了推广产品,会在多个渠道应用市场发布应用,为了统计不同渠道的数据,需要在应用中表明渠道,如果一个一个去修改打包效率会很低.AS为我们提供了简便的方法,可以多渠道打包,一次打包所有的渠道包. 1. AS 2.x多渠道打包 (1) AndroidManifest中增加节点 <!-- 多渠道打包 --> ... <meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VAL

  • 你该知道的Gradle配置知识总结

    前言 本文主要介绍了关于Gradle配置的相关知识,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 参考链接:https://developer.android.com/studio/build/index.html 本片文章的内容全部参考自上面的链接,其中有些内容是直接翻译的,有些内容是结合自己的经验总结的,可能有理解错误的地方,非常希望大家能指正出来,在交流中进步. Gradle 编译过程 编译流程图 上图展示了一个典型的 App 编译过程,主要分为以几步: 编译器将源代码

  • Apache 服务器最新版下载、安装及配置教程图解(Windows版)

    Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一.它快速.可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中.同时Apache音译为阿帕奇,是北美印第安人的一个部落,叫阿帕奇族,在美国的西南部.也是一个基金会的名称.一种武装直升机等等. 一.Apache的下载 1.点击链接http://httpd.apache.org/download.cgi,找到所需版本,

  • Mybatis 创建方法、全局配置教程详解

    总体介绍:MyBatis实际上是Ibatis3.0版本以后的持久化层框架[也就是和数据库打交道的框架]! 和数据库打交道的技术有: 原生的JDBC技术--->Spring的JdbcTemplate技术 这些工具都是提供简单的SQL语句的执行,但是和我们这里学的MyBatis框架还有些不同, 框架是一整套的东西,例如事务控制,查询缓存,字段映射等等. 我们用原生JDBC操作数据库的时候都会经过: 编写sql---->预编译---->设置参数----->执行sql------->

  • 史上最全Android build.gradle配置详解(小结)

    Android Studio是采用gradle来构建项目的,gradle是基于groovy语言的,如果只是用它构建普通Android项目的话,是可以不去学groovy的.当我们创建一个Android项目时会包含两个Android build.gradle配置详解文件,如下图: 一.Project的build.gradle文件: 对应的build.gradle代码如下: // Top-level build file where you can add configuration options

  • Windows操作系统下Linux虚拟机的安装与配置教程图解

    前言 在工作中,经常需要在Linux环境下操作,这里记一下win10系统中创建安装和配置Linux的操作系统的过程. 资源下载 1.虚拟机VMware VMware可以去官网下载.这里用的是VMware-player-15.5.0版本,下载完安装到电脑上. 链接: https://pan.baidu.com/s/1LWhDtRsYMIWGUs91xp-vlQ 提取码: kkrt 2.镜像系统Ubuntu 镜像也可以去Ubuntu官网下载.这里用的是Ubuntu18.04 64位操作系统.对于入门

  • VSCode开发UNI-APP 配置教程及插件

    目录 写在前面 注意事项 开发环境搭建 开发配置注意事项 写在前面 uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS.Android.H5.以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝).快应用等多个平台. 开发UNI-APP最好的工具是HbuilderX,但这并不打脸为什么要在VsCode中开发UNI-APP,用官方的话来说HBuilderX是专为Vue打造的编辑器,那么非Vue又该怎么办呢?这时就不得不对选择其它产品,那么为什

随机推荐