Android studio 自定义打包apk名
Android Studio打包应用默认生成的apk名称是:app-release.apk 、如果我们要让生成的apk名跟我们版本包名有联系的话,那我们就要自定义生成的apk名了
需要在build.gradle(Module:app)文件下android{ }中添加:
// apk name def
android.applicationVariants.all { variant ->
variant.outputs.each { output ->
output.outputFile = new File(output.outputFile.parent, defaultConfig.applicationId + "-" + buildType.name + "-v" +
defaultConfig.versionName + "-" + defaultConfig.versionCode + ".apk" );
}
}
这样我们打包的apk名就是:com.test.demo-release-v1.01-2.apk ,就自动带上我们的包名和版本号了,省去每次都要手动自己改了。
如果要生成如下版本号时间戳的apk包名,则可以用如下build.gradle代码:
模块名-渠道名-版本号-版本名称-包名-编译时间.apk
apply plugin: 'com.android.application' def releaseTime() {
return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"))
} android {
compileSdkVersion 23
buildToolsVersion "23.0.1" defaultConfig {
applicationId "com.djk.myapplication"
minSdkVersion 14
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
} productFlavors{
develop{}
xiaomi{}
huawei{}
anzhi{}
} android.applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
//这里修改apk文件名
def fileName = "demo_${variant.productFlavors[0].name}-${defaultConfig.versionCode}-${defaultConfig.versionName}-${releaseTime()}.apk"
//def fileName = outputFile.name.replace("app", "${rootProject.ext.appName}-${releaseTime()}-${defaultConfig.versionCode}-${defaultConfig.versionName}")
output.outputFile = new File(outputFile.parent, fileName)
}
}
} } dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.0'
}
效果

ref:
Android Studio apk打包自定义包名
https://blog.csdn.net/github_37472200/article/details/78537592?locationNum=3&fps=1
// for as 3.3+
android {
......
android.applicationVariants.all { variant ->
variant.outputs.all { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
outputFileName = defaultConfig.applicationId.subSequence(defaultConfig.applicationId.lastIndexOf(".") + 1, defaultConfig.applicationId.length()) + "-v" + defaultConfig.versionCode + "-" + releaseTime() + "-" + output.baseName + ".apk"
}
}
}
}
def releaseTime() {
return new Date().format("yyyyMMddHHmmss", TimeZone.getTimeZone("UTC"))
}
// for as 3.3 以下
android {
......
variant.outputs.each { output ->
if ("release".equals(variant.buildType.name)) {
println("releasebaseName:"+variant.buildType.name)
def string = defaultConfig.applicationId.subSequence(defaultConfig.applicationId.lastIndexOf(".") + 1,
defaultConfig.applicationId.length()) + "-v" + defaultConfig.versionCode + "-" + releaseTime() + "-" + output.baseName + ".apk";
output.outputFile = new File(output.outputFile.parent, string)
} else if ("debug".equals(variant.buildType.name)) {
println("debugbaseName:"+variant.buildType.name)
def string = defaultConfig.applicationId.subSequence(defaultConfig.applicationId.lastIndexOf(".") + 1,
defaultConfig.applicationId.length()) + "-v" + defaultConfig.versionCode + "-" + releaseTime() + "-" + output.baseName + ".apk";
output.outputFil
生产的包名为:项目名-版本号-打包时间-编译类型.apk
这个有个BUG就是在打包时能正常生产apk包,但是直接运行安装到手机时会提示找不到包名,初步分析是因为包名中含有时间戳,去掉分秒的时间就可以了:”yyyyMMddHH”
Android studio gradle配置完整版(转) - petercao - 博客园
http://www.cnblogs.com/bluestorm/p/6641083.html
/**
* apk rename
* 生成apk名形如: cqq-v1.0-1-release.apk
*/
android.applicationVariants.all { variant ->
variant.outputs.all { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) { // like: com.android.cmm.cqq-v1.0-1-release.apk
outputFileName = defaultConfig.applicationId + "-v" + defaultConfig.versionName + "-" +
defaultConfig.versionCode + "-" + output.baseName + ".apk" // like: cqq-v1.0-1-release.apk
// outputFileName = defaultConfig.applicationId.subSequence(
// defaultConfig.applicationId.lastIndexOf(".") + 1,
// defaultConfig.applicationId.length()) + "-v" + defaultConfig.versionName + "-" +
// defaultConfig.versionCode + "-" + output.baseName + ".apk"
}
}
}
Android studio 自定义打包apk名的更多相关文章
- Android studio 自定义打包APK名称
Android Studio打包应用默认生成的apk名称是:app-release.apk .如果我们要让生成的apk名跟我们版本包名有联系的话,那我们就要自定义生成的apk名了,要怎么做呢. 我们只 ...
- <Android Studio> 3.打包APK
我的IDE版本是 3.5 我希望输出的apk文件格式是: 名称_v版本_release/debug_日期 时间.apk 步骤: 1.打开build.gradle 末尾添加如下代码 def releas ...
- [Android Studio] Android studio 多渠道打包(超简洁版)
[Android Studio] Android studio 多渠道打包(超简洁版) 转载:http://xuyazhou.com/archives/461 http://relex.me/usin ...
- Android Studio 动态调试 apk 反编译出的 smali 代码
在信安大赛的准备过程中,主要通过 Android Studio 动态调试 apk 反编译出来的 smali 代码的方式来对我们分析的执行流程进行验证.该技巧的主要流程在此记录.以下过程使用 Andro ...
- Android studio 使用心得(四)—android studio 多渠道打包(二)
Android studio 使用心得(四)—android studio 多渠道打包 这篇文章讲了一种打包方式.是直接在android studio 里面可视化操作,结合配置文件.我个人觉得严格上来 ...
- android studio 自定义路径安装报错"You are attempting to install the android SDK
android studio 自定义路径安装报错"You are attempting to install the android SDK 解决方法: 出现这个提示 主要是安装 Andro ...
- Android Studio 自定义debug签名文件keystore
Android Studio 自定义debug签名文件keystore
- 第07讲- Android项目的打包apk
第07讲Android项目的打包apk 方法一:在工作目录bin文件夹下有一个与项目同名的apk文件 (最懒惰的方式,不推荐,不安全,不利于版本更新,只有在开发模式时使用) 方法二:使用key方式 签 ...
- Android Studio单独生成apk
/********************************************************************* * Android Studio单独生成apk * 说明: ...
随机推荐
- hibernate优化笔记(随时更新)
一:优化配置 1.关联映射的配置:对照之前的博客,如:inverse属性的设置(减少对同一对象的多条update语句):在one端设置为true,只会执行一次update语句 2.级联cascade属 ...
- JavaScript------获取url地址中的参数
$(document).ready(function () { //获取地址中的参数(name是字符串) function getParameter(name) { //正则表达式 var reg = ...
- React的井字过三关(1)
React的井字过三关(1) 本文系React官方教程的Tutorial: Intro To React的笔记.由笔者用ES5语法改写. 在本篇笔记中,尝试用React构建一个可交互的井字棋游戏. 开 ...
- ORACLE常用数值函数、转换函数、字符串函数
本文更多将会介绍三思在日常中经常会用到的,或者虽然很少用到,但是感觉挺有意思的一些函数.分二类介绍,分别是: 著名函数篇 -经常用到的函数 非著名函数篇-即虽然很少用到,但某些情况下却很实用 注:N表 ...
- shell脚本学习第一课
shell是一种程序设计语言,是访问操作系统内核的服务. Linux的shell种类常见的有: Bourne Shell(/usr/bin/sh或/bin/sh) Bourne Again Shell ...
- java中数组的基本知识
数组{ 物以类聚 人以群分 avg sum 数组 数组的概念[ 数组:一组具有相同数据类型的集合 ] 数组的语法[ 先声明 后使用 声明数组: 数据类型+[]+ 变量名 ;/ 数据类型+变量名 +[] ...
- EBS提交请求出现REP-3000错误
在AIX上利用并发请求提交报表的時候,出现如下错误:REP-3000: Internal error starting Oracle Toolkit.这是因为Report Server需要X-Wind ...
- 码云以及git使用
码云的使用方法以及git的连用 创建公钥的方法 打开码云,点击个人资料---->SSH公钥---->点击怎样生成公钥 SSH Keys ssh keys可以让你在你的电脑和Git@OSC知 ...
- JS学习:第二周——NO.2正则
1.[正则] 就是用来操作(匹配和捕获)的一系列规则: 匹配:校验字符串是否符合我们的规则:返回值--布尔值 匹配这里用的是正则的方法:test(),reg.text( ); 捕获 ...
- oracle 关于null值排序
在oracle中根据字段来desc排序的话null值可能会在数据的最前面.然而有时候我们查看数据的时候并不希望能够在前面看到这些null值的排序数据. 因此我查了一下: 1.排序的时候运用nvl(). ...