android gradle如何修改生成的apk名字
作者:李笑笑哈哈 发布时间:2023-03-09 23:38:56
前言
说实话,我在 * 工作的时候,就见过Gradle。但是当时我一直不知道这是什么东西。而且 * 工具组的工程师还将其和Android Studio * 版一起推送,偶一看就更没兴趣了。为什么那个时候如此不待见Gradle呢?因为我此前一直是做ROM开发。在这个层面上,我们用make,mm或者mmm就可以了。而且,编译耗时对我们来说也不是啥痛点,因为用组内吊炸天的神机服务器完整编译 * 的image也要耗费1个小时左右。所以,那个时侯Gradle完全不是我们的菜。
现在,搞APP开发居多,编译/打包等问题立即就成痛点了。
比如:
一个APP有多个版本,Release版、Debug版、Test版。甚至针对不同APP Store都有不同的版本。在以前ROM的环境下,虽然可以配置Android.mk,但是需要依赖整个Android源码,而且还不能完全做到满足条件,很多事情需要手动搞。一个app如果涉及到多个开发者,手动操作必然会带来混乱。
library工程我们需要编译成jar包,然后发布给其他开发者使用。以前是用eclipse的export,做一堆选择。要是能自动编译成jar包就爽了。
上述问题对绝大部分APP开发者而言都不陌生,而Gradle作为一种很方便的的构建工具,可以非常轻松得解决构建过程中的各种问题。
本文将详细介绍关于android gradle修改生成的apk名字的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。
android gradle修改生成的apk名字
Android Studio打包应用默认生成的apk名称是:app-release.apk 、app-debug.apk
如果我们要让生成的apk名跟我们版本包名、渠道号有联系的话,那我们就要自定义生成的apk名了
需要在build.gradle(Module:app)文件下 android{ } 中添加:
android.applicationVariants.all {
variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
def name = "qq_v${defaultConfig.versionName}_${variant.productFlavors[0].name}_${buildType.name}.apk"
output.outputFile = new File(outputFile.parent, name)
}
}
}
//多渠道
productFlavors {
tencent{
}
vivo{
}
oppo{
}
}
修改名字的地方
def name = "xxx_${defaultConfig.versionName}_${variant.productFlavors[0].name}_${buildType.name}.apk"
xxx:为你自己的工程名,自己起的标识- 比如 wx、qq、taobao
defaultConfig.versionName:版本号
variant.productFlavors[0].name:渠道标识
buildType.name:build方式release/debug
//这么写也可以
def name= "qq"+"_"+"v"+defaultConfig.versionName+"_"+variant.productFlavors[0].name+"_"+buildType.name+".apk"
然后使用命令打包
./gradlew assemble --会同时打debug和release的包
使用如上命令测试出包如图:
./gradlew assembleRelease --只打release的包
来源:http://www.jianshu.com/p/7f69ce981e6f


猜你喜欢
- 本文会介绍从一个最基本的java工程,到Web工程,到集成Spring、SpringMVC、Spring
- Android使用GridView实现日历功能示例,代码有点多,发个图先:如果懒得往下看的,可以直接下载源码吧,最近一直有人要,由于时间太久
- private static int previousMuteMode = -1;/** * 来电静音 *
- 本文实例为大家分享了C#实现网页画图的具体代码,供大家参考,具体内容如下代码贴着保存下using System;using System.C
- Service翻译成中文是服务,熟悉Windows 系统的同学一定很熟悉了。Android里的Service跟Windows里的Servic
- Wrapper条件构造器updateForSet更新官方文档:https://baomidou.gitee.io/mybatis-plus-
- 冒泡排序:就是按索引逐次比较相邻的两个元素,如果大于/小于(取决于需要升序排还是降序排),则置换,否则不做改变这样一轮下来,比较了n-1次,
- 前言: 之前安装了Ubuntu 18.04,结果在安装Codeblocks / VScode还是安装gcc,c/c++的时候出现了一堆错误(
- 在android应用中,多屏滑动是一种很常见的风格,没有采用viewpager的代码实现会很长,如果采用ViewPager,代码就会短很多,
- SSM(Spring+SpringMVC+Mybatis),目前较为主流的企业级架构方案。标准的MVC设计模式,将整个系统划分为显示层、Co
- 本文实例讲述了Android使用Theme自定义Activity进入退出动画的方法。分享给大家供大家参考,具体如下:有没有觉得Activit
- 步骤,如图所示:1.添加异步任务业务类package top.ytheng.demo.task;import java.util.concu
- 相信很多人都了解c#语言,但是对于c#语言编写应用程序的经验不够多,所以经常为没有实例练习而烦恼吧。今天小编给大家介绍下C#里的多线程技术。
- 先上效果图文件和加密文件之间的转换。先添加辅助类public class AES_EnorDecrypt { &n
- Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个
- 循环轮播的方法有两种,一种是使用定时器另外一种是使用手指拨动,相比较而言,定时器实现循环播放比较容易,只要在定时器的消息里加上简单几段代码即
- 1. 创建线程 1.1 通过构造函数:public Thread(Runnable target, String n
- @Param注解导致分页失效—分页 * 问题描述在使用mybatis分页时,使用@Param注解传入了两个对象,分页失效,查询出的总是全部的
- 如果所有的键都是小整数,我们可以使用一个数组来实现无序的符号表,将键作为数组的索引而数组中键 i 处存储的就是它对应的值。散列表就是用来处理
- 使用ExecutorService来停止线程服务之前的文章中我们提到了ExecutorService可以使用shutdown和shutdow