" app-release.apk" 如何更改此默认生成的 apk 名称
" app-release.apk" how to change this default generated apk name
每当我在 Android Studio 中生成签名的 apk 时,默认情况下它给出的名称为 app-release.apk...
我们可以做一些设置,让它应该提示并询问我需要分配给 apk 的名称(在 eclipse 中的做法)
我所做的是 - 在生成后重命名 apk。
这不会给出任何错误,但是否有任何真正的方法可以让我可以在设置中进行任何更改以获得提示。
注意::
在生成 apk 时 android studio 提示我 select 位置(仅)
不重命名,但也许首先正确生成名称会有帮助? Change apk name with Gradle
是的,我们可以改变它,但需要多加注意
现在将此添加到项目的 build.gradle 中,同时确保已检查项目的 build variant喜欢 release or Debug
所以在这里我将构建变体设置为 release
但您也可以将 select 设置为 Debug。
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig getSigningConfig()
applicationVariants.all { variant ->
variant.outputs.each { output ->
def date = new Date();
def formattedDate = date.format('yyyyMMddHHmmss')
output.outputFile = new File(output.outputFile.parent,
output.outputFile.name.replace("-release", "-" + formattedDate)
//for Debug use output.outputFile = new File(output.outputFile.parent,
// output.outputFile.name.replace("-debug", "-" + formattedDate)
)
}
}
}
}
You may Do it With different Approach Like this
defaultConfig {
applicationId "com.myapp.status"
minSdkVersion 16
targetSdkVersion 23
versionCode 1
versionName "1.0"
setProperty("archivesBaseName", "COMU-$versionName")
}
在 build.gradle 中使用 Set 属性 方法
并且不要忘记在 运行 项目 之前同步 gradle
希望它能解决您的问题:)
A New approach to handle this added recently by google update
You may now rename your build according to flavor or Variant output
//Below source is from developer android documentation
For more details follow the above documentation link
Using the Variant API to manipulate variant outputs is broken with the new plugin. It still works for simple tasks, such as changing the APK name during build time, as shown below:
// If you use each() to iterate through the variant objects,
// you need to start using all(). That's because each() iterates
// through only the objects that already exist during configuration time—
// but those object don't exist at configuration time with the new model.
// However, all() adapts to the new model by picking up object as they are
// added during execution.
android.applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = "${variant.name}-${variant.versionName}.apk"
}
}
Renaming .aab bundle
This is nicely
tasks.whenTaskAdded { task ->
if (task.name.startsWith("bundle")) {
def renameTaskName = "rename${task.name.capitalize()}Aab"
def flavor = task.name.substring("bundle".length()).uncapitalize()
tasks.create(renameTaskName, Copy) {
def path = "${buildDir}/outputs/bundle/${flavor}/"
from(path)
include "app.aab"
destinationDir file("${buildDir}/outputs/renamedBundle/")
rename "app.aab", "${flavor}.aab"
}
task.finalizedBy(renameTaskName)
}
//@credit to David Medenjak for this block of code
}
Is there need of above code
我在最新版本的android studio 3.3.1
中观察到的
.aab 包的重命名由前面的代码完成,根本不需要任何任务重命名。
希望对大家有所帮助。 :)
我修改了@Abhishek Chaubey 的回答以更改整个文件名:
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
applicationVariants.all { variant ->
variant.outputs.each { output ->
project.ext { appName = 'MyAppName' }
def formattedDate = new Date().format('yyyyMMddHHmmss')
def newName = output.outputFile.name
newName = newName.replace("app-", "$project.ext.appName-") //"MyAppName" -> I set my app variables in the root project
newName = newName.replace("-release", "-release" + formattedDate)
//noinspection GroovyAssignabilityCheck
output.outputFile = new File(output.outputFile.parent, newName)
}
}
}
debug {
}
}
这会生成如下文件名:MyAppName-release20150519121617.apk
(已编辑以与 Android Studio 3.0 和 Gradle 4 一起使用)
我正在寻找一个更复杂的 apk 文件名重命名选项,我编写了这个解决方案,使用以下数据重命名 apk:
- 风味
- 构建类型
- 版本
- 日期
您会得到这样的 apk:myProject_dev_debug_1.3.6_131016_1047.apk.
You can find the whole answer here。希望对您有所帮助!
在build.gradle中:
android {
...
buildTypes {
release {
minifyEnabled true
...
}
debug {
minifyEnabled false
}
}
productFlavors {
prod {
applicationId "com.feraguiba.myproject"
versionCode 3
versionName "1.2.0"
}
dev {
applicationId "com.feraguiba.myproject.dev"
versionCode 15
versionName "1.3.6"
}
}
applicationVariants.all { variant ->
variant.outputs.all { output ->
def project = "myProject"
def SEP = "_"
def flavor = variant.productFlavors[0].name
def buildType = variant.variantData.variantConfiguration.buildType.name
def version = variant.versionName
def date = new Date();
def formattedDate = date.format('ddMMyy_HHmm')
def newApkName = project + SEP + flavor + SEP + buildType + SEP + version + SEP + formattedDate + ".apk"
outputFileName = new File(newApkName)
}
}
}
我根据@Fer 回答写了更通用的解决方案。
它还应该与 applicationId
、versionName
、versionCode
.
的基于风格和构建类型的配置一起使用
在build.gradle中:
android {
...
applicationVariants.all { variant ->
variant.outputs.each { output ->
def appId = variant.applicationId
def versionName = variant.versionName
def versionCode = variant.versionCode
def flavorName = variant.flavorName // e. g. free
def buildType = variant.buildType // e. g. debug
def variantName = variant.name // e. g. freeDebug
def apkName = appId + '_' + variantName + '_' + versionName + '_' + versionCode + '.apk';
output.outputFile = new File(output.outputFile.parentFile, apkName)
}
}
}
示例 apk 名称:com.example.app_freeDebug_1.0_1.apk
有关 variant
变量的更多信息,请参阅 ApkVariant and BaseVariant 接口定义。
我认为这会有所帮助。
buildTypes {
release {
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
applicationVariants.all { variant ->
variant.outputs.each { output ->
project.ext { appName = 'MyAppName' }
def formattedDate = new Date().format('yyyyMMddHHmmss')
def newName = output.outputFile.name
newName = newName.replace("app-", "$project.ext.appName-")
newName = newName.replace("-release", "-release" + formattedDate)
output.outputFile = new File(output.outputFile.parent, newName)
}
}
}
}
productFlavors {
flavor1 {
}
flavor2 {
proguardFile 'flavor2-rules.pro'
}
}
使用最新的 android gradle 插件 (3.0) 可能会出现错误:
Cannot set the value of read-only property 'outputFile'
根据the migration guide,我们现在应该使用以下方法:
applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = "${applicationName}_${variant.buildType.name}_${defaultConfig.versionName}.apk"
}
}
注2这里的主要变化:
现在使用 all
而不是 each
来迭代变量输出。
outputFileName
使用 属性 而不是改变文件引用。
这是一个更短的方法:
defaultConfig {
...
applicationId "com.blahblah.example"
versionCode 1
versionName "1.0"
setProperty("archivesBaseName", applicationId + "-v" + versionCode + "(" + versionName + ")")
//or so
archivesBaseName = "$applicationId-v$versionCode($versionName)"
}
它给你名字com.blahblah.example-v1(1.0)-debug.apk(调试模式)
Android Studio 默认通过构建类型名称添加 versionNameSuffix,如果要覆盖它,请执行下一步:
buildTypes {
debug {
...
versionNameSuffix "-MyNiceDebugModeName"
}
release {
...
}
}
调试模式下的输出:com.blahblah.example-v1(1.0)-MyNiceDebugModeName.apk
首先将您的模块从 app 重命名为 SurveyApp
然后将其添加到您的项目顶层(根项目)gradle。它与 Gradle 3.0
一起工作
//rename apk for all sub projects
subprojects {
afterEvaluate { project ->
if (project.hasProperty("android")) {
android.applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = "${project.name}-${variant.name}-${variant.versionName}.apk"
}
}
}
}
}
我的解决方案也可能对某人有帮助。
测试并适用于 IntelliJ 2017.3.2 和 Gradle 4.4
场景:
我的应用程序中有 2 种风格,因此我希望每个版本都根据每种风格适当地命名。
下面的代码将被放入您的模块 gradle 构建文件中:
{app-root}/app/build.gradle
Gradle 要添加到 android{ }
块的代码:
android {
// ...
defaultConfig {
versionCode 10
versionName "1.2.3_build5"
}
buildTypes {
// ...
release {
// ...
applicationVariants.all {
variant.outputs.each { output ->
output.outputFile = new File(output.outputFile.parent, output.outputFile.name.replace(output.outputFile.name, variant.flavorName + "-" + defaultConfig.versionName + "_v" + defaultConfig.versionCode + ".apk"))
}
}
}
}
productFlavors {
myspicyflavor {
applicationIdSuffix ".MySpicyFlavor"
signingConfig signingConfigs.debug
}
mystandardflavor {
applicationIdSuffix ".MyStandardFlavor"
signingConfig signingConfigs.config
}
}
}
以上提供了在 {app-root}/app/
中找到的以下 APK:
myspicyflavor-release-1.2.3_build5_v10.apk
mystandardflavor-release-1.2.3_build5_v10.apk
希望对大家有用。
更多信息,请参阅问题中提到的其他答案
在build.gradle(Module:app)
中添加以下代码
android {
......
......
......
buildTypes {
release {
......
......
......
/*The is the code fot the template of release name*/
applicationVariants.all { variant ->
variant.outputs.each { output ->
def formattedDate = new Date().format('yyyy-MM-dd HH-mm')
def newName = "Your App Name " + formattedDate
output.outputFile = new File(output.outputFile.parent, newName)
}
}
}
}
}
发布版本名称将是您的应用程序名称 2018-03-31 12-34
在您的应用级别 gradle
添加 android.applicationVariants.all
如下方块
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
lintOptions {
disable 'MissingTranslation'
}
signingConfig signingConfigs.release
android.applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = "${applicationId}_${versionCode}_${variant.flavorName}_${variant.buildType.name}.apk"
}
}
}
debug {
applicationIdSuffix '.debug'
versionNameSuffix '_debug'
}
}
2019/03/25 可用
android 工作室 4.1.1
applicationVariants.all { variant ->
variant.outputs.all { output ->
def reversion = "118"
def date = new java.text.SimpleDateFormat("yyyyMMdd").format(new Date())
def versionName = defaultConfig.versionName
outputFileName = "MyApp_${versionName}_${date}_${reversion}.apk"
}
}
较新的 android 工作室 Gradle
AppName 是您想要的应用名称,请替换它
variantName 将是默认选择的 variant 或 flavor
日期将是今天的日期,所以需要做任何更改只需粘贴它
applicationVariants.all { variant ->
variant.outputs.all {
def variantName = variant.name
def versionName = variant.versionName
def formattedDate = new Date().format('dd-MM-YYYY')
outputFileName = "AppName_${variantName}_D_${formattedDate}_V_${versionName}.apk"
}
}
输出:
AppName_release_D_26-04-2021_V_1.2.apk
我意识到很多答案并不适合不同的 buildType,下面是我的处理方式。
applicationVariants.all { variant ->
variant.outputs.all {
def appVersionName = "${applicationId}v${versionCode}#${versionName}"
switch (buildType.name) {
case "debug": {
outputFileName = "${appVersionName}-staging.apk"
break
}
case "release": {
outputFileName = "${appVersionName}.apk"
break
}
}
}
}
applicationId、versionCode 和 versionName 等属性已在您的 defaultConfig 中定义。每当您生成 APK 时,您都可以轻松地格式化为赋予它更有意义和上下文命名的东西。
这就是它的生产方式。
com.delacrixmorgan-v1.0.0#1.apk
com.delacrixmorgan-v1.0.0#1-staging.apk
除此之外,如果你们想了解更多 Gradle。我在这篇 Medium 文章中进行了详细介绍。
Supercharging your Android Gradle
对于 flavors and split APK
这是 APK
文件的工作方式,而不是 Bundle / AAB files
android {
....
productFlavors {
aFlavor {
applicationId "com.a"
versionCode 5
versionName "1.0.5"
signingConfig signingConfigs.signingA
}
bFlavor {
applicationId "com.b"
versionCode 5
versionName "1.0.5"
signingConfig signingConfigs.signingB
}
cFlavor {
applicationId "com.c"
versionCode 3
versionName "1.0.3"
signingConfig signingConfigs.signingC
}
}
splits {
abi {
enable true
reset()
include 'arm64-v8a', 'x86', 'x86_64'
universalApk false
}
}
android.applicationVariants.all { variant ->
variant.outputs.all { output ->
// New one or Updated one
output.outputFileName = "${variant.getFlavorName()}-${variant.buildType.name}-v${versionCode}_${versionName}-${new Date().format('ddMMMyyyy_HH-mm')}-${output.getFilter(com.android.build.OutputFile.ABI)}.apk"
// Old one
// output.outputFileName = "${variant.buildType.name}-v${versionCode}_${versionName}-${new Date().format('ddMMMyyyy_HH-mm')}.apk"
}
}
}
结果
口味
发布
aFlavor-release-v5_1.0.5-16Jan2020_21-26-arm64-v8a.apk
aFlavor-release-v5_1.0.5-16Jan2020_21-26-x86_64.apk
aFlavor-release-v5_1.0.5-16Jan2020_21-26-x86.apk
调试
aFlavor-debug-v5_1.0.5-16Jan2020_21-26-arm64-v8a.apk
aFlavor-debug-v5_1.0.5-16Jan2020_21-26-x86_64.apk
aFlavor-debug-v5_1.0.5-16Jan2020_21-26-x86.apk
对于 bFlavor
与上面相似的名称只需将前缀aFlavor
更改为bFlavor
like
bFlavor-release-v5_1.0.5-16Jan2020_21-26-arm64-v8a.apk
对于 cFlavor
与上面类似的名称只需将前缀aFlavor
更改为cFlavor
并且,versionCode
和 versionName
cFlavor-release-v3_1.0.3-16Jan2020_21-26-arm64-v8a.apk
有关详细信息,请查看此 线程
将此代码放入 build.gradle(app)
android {
.......
applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = "Name_of_App.apk"
}}
}
最简单的方法 - 在 build.gradle(app):
android {
compileSdk 31
project.archivesBaseName = "Scanner"
defaultConfig {
并且 - 您将收到:Scanner-release.apk
每当我在 Android Studio 中生成签名的 apk 时,默认情况下它给出的名称为 app-release.apk...
我们可以做一些设置,让它应该提示并询问我需要分配给 apk 的名称(在 eclipse 中的做法)
我所做的是 - 在生成后重命名 apk。 这不会给出任何错误,但是否有任何真正的方法可以让我可以在设置中进行任何更改以获得提示。
注意::
在生成 apk 时 android studio 提示我 select 位置(仅)
不重命名,但也许首先正确生成名称会有帮助? Change apk name with Gradle
是的,我们可以改变它,但需要多加注意
现在将此添加到项目的 build.gradle 中,同时确保已检查项目的 build variant喜欢 release or Debug
所以在这里我将构建变体设置为 release
但您也可以将 select 设置为 Debug。
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig getSigningConfig()
applicationVariants.all { variant ->
variant.outputs.each { output ->
def date = new Date();
def formattedDate = date.format('yyyyMMddHHmmss')
output.outputFile = new File(output.outputFile.parent,
output.outputFile.name.replace("-release", "-" + formattedDate)
//for Debug use output.outputFile = new File(output.outputFile.parent,
// output.outputFile.name.replace("-debug", "-" + formattedDate)
)
}
}
}
}
You may Do it With different Approach Like this
defaultConfig {
applicationId "com.myapp.status"
minSdkVersion 16
targetSdkVersion 23
versionCode 1
versionName "1.0"
setProperty("archivesBaseName", "COMU-$versionName")
}
在 build.gradle 中使用 Set 属性 方法 并且不要忘记在 运行 项目 之前同步 gradle 希望它能解决您的问题:)
A New approach to handle this added recently by google update You may now rename your build according to flavor or Variant output //Below source is from developer android documentation For more details follow the above documentation link
Using the Variant API to manipulate variant outputs is broken with the new plugin. It still works for simple tasks, such as changing the APK name during build time, as shown below:
// If you use each() to iterate through the variant objects,
// you need to start using all(). That's because each() iterates
// through only the objects that already exist during configuration time—
// but those object don't exist at configuration time with the new model.
// However, all() adapts to the new model by picking up object as they are
// added during execution.
android.applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = "${variant.name}-${variant.versionName}.apk"
}
}
Renaming .aab bundle This is nicely
tasks.whenTaskAdded { task ->
if (task.name.startsWith("bundle")) {
def renameTaskName = "rename${task.name.capitalize()}Aab"
def flavor = task.name.substring("bundle".length()).uncapitalize()
tasks.create(renameTaskName, Copy) {
def path = "${buildDir}/outputs/bundle/${flavor}/"
from(path)
include "app.aab"
destinationDir file("${buildDir}/outputs/renamedBundle/")
rename "app.aab", "${flavor}.aab"
}
task.finalizedBy(renameTaskName)
}
//@credit to David Medenjak for this block of code
}
Is there need of above code
我在最新版本的android studio 3.3.1
中观察到的.aab 包的重命名由前面的代码完成,根本不需要任何任务重命名。
希望对大家有所帮助。 :)
我修改了@Abhishek Chaubey 的回答以更改整个文件名:
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
applicationVariants.all { variant ->
variant.outputs.each { output ->
project.ext { appName = 'MyAppName' }
def formattedDate = new Date().format('yyyyMMddHHmmss')
def newName = output.outputFile.name
newName = newName.replace("app-", "$project.ext.appName-") //"MyAppName" -> I set my app variables in the root project
newName = newName.replace("-release", "-release" + formattedDate)
//noinspection GroovyAssignabilityCheck
output.outputFile = new File(output.outputFile.parent, newName)
}
}
}
debug {
}
}
这会生成如下文件名:MyAppName-release20150519121617.apk
(已编辑以与 Android Studio 3.0 和 Gradle 4 一起使用)
我正在寻找一个更复杂的 apk 文件名重命名选项,我编写了这个解决方案,使用以下数据重命名 apk:
- 风味
- 构建类型
- 版本
- 日期
您会得到这样的 apk:myProject_dev_debug_1.3.6_131016_1047.apk.
You can find the whole answer here。希望对您有所帮助!
在build.gradle中:
android {
...
buildTypes {
release {
minifyEnabled true
...
}
debug {
minifyEnabled false
}
}
productFlavors {
prod {
applicationId "com.feraguiba.myproject"
versionCode 3
versionName "1.2.0"
}
dev {
applicationId "com.feraguiba.myproject.dev"
versionCode 15
versionName "1.3.6"
}
}
applicationVariants.all { variant ->
variant.outputs.all { output ->
def project = "myProject"
def SEP = "_"
def flavor = variant.productFlavors[0].name
def buildType = variant.variantData.variantConfiguration.buildType.name
def version = variant.versionName
def date = new Date();
def formattedDate = date.format('ddMMyy_HHmm')
def newApkName = project + SEP + flavor + SEP + buildType + SEP + version + SEP + formattedDate + ".apk"
outputFileName = new File(newApkName)
}
}
}
我根据@Fer 回答写了更通用的解决方案。
它还应该与 applicationId
、versionName
、versionCode
.
在build.gradle中:
android {
...
applicationVariants.all { variant ->
variant.outputs.each { output ->
def appId = variant.applicationId
def versionName = variant.versionName
def versionCode = variant.versionCode
def flavorName = variant.flavorName // e. g. free
def buildType = variant.buildType // e. g. debug
def variantName = variant.name // e. g. freeDebug
def apkName = appId + '_' + variantName + '_' + versionName + '_' + versionCode + '.apk';
output.outputFile = new File(output.outputFile.parentFile, apkName)
}
}
}
示例 apk 名称:com.example.app_freeDebug_1.0_1.apk
有关 variant
变量的更多信息,请参阅 ApkVariant and BaseVariant 接口定义。
我认为这会有所帮助。
buildTypes {
release {
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
applicationVariants.all { variant ->
variant.outputs.each { output ->
project.ext { appName = 'MyAppName' }
def formattedDate = new Date().format('yyyyMMddHHmmss')
def newName = output.outputFile.name
newName = newName.replace("app-", "$project.ext.appName-")
newName = newName.replace("-release", "-release" + formattedDate)
output.outputFile = new File(output.outputFile.parent, newName)
}
}
}
}
productFlavors {
flavor1 {
}
flavor2 {
proguardFile 'flavor2-rules.pro'
}
}
使用最新的 android gradle 插件 (3.0) 可能会出现错误:
Cannot set the value of read-only property 'outputFile'
根据the migration guide,我们现在应该使用以下方法:
applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = "${applicationName}_${variant.buildType.name}_${defaultConfig.versionName}.apk"
}
}
注2这里的主要变化:
-
现在使用
all
而不是each
来迭代变量输出。outputFileName
使用 属性 而不是改变文件引用。
这是一个更短的方法:
defaultConfig {
...
applicationId "com.blahblah.example"
versionCode 1
versionName "1.0"
setProperty("archivesBaseName", applicationId + "-v" + versionCode + "(" + versionName + ")")
//or so
archivesBaseName = "$applicationId-v$versionCode($versionName)"
}
它给你名字com.blahblah.example-v1(1.0)-debug.apk(调试模式)
Android Studio 默认通过构建类型名称添加 versionNameSuffix,如果要覆盖它,请执行下一步:
buildTypes {
debug {
...
versionNameSuffix "-MyNiceDebugModeName"
}
release {
...
}
}
调试模式下的输出:com.blahblah.example-v1(1.0)-MyNiceDebugModeName.apk
首先将您的模块从 app 重命名为 SurveyApp
然后将其添加到您的项目顶层(根项目)gradle。它与 Gradle 3.0
一起工作//rename apk for all sub projects
subprojects {
afterEvaluate { project ->
if (project.hasProperty("android")) {
android.applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = "${project.name}-${variant.name}-${variant.versionName}.apk"
}
}
}
}
}
我的解决方案也可能对某人有帮助。
测试并适用于 IntelliJ 2017.3.2 和 Gradle 4.4
场景:
我的应用程序中有 2 种风格,因此我希望每个版本都根据每种风格适当地命名。
下面的代码将被放入您的模块 gradle 构建文件中:
{app-root}/app/build.gradle
Gradle 要添加到 android{ }
块的代码:
android {
// ...
defaultConfig {
versionCode 10
versionName "1.2.3_build5"
}
buildTypes {
// ...
release {
// ...
applicationVariants.all {
variant.outputs.each { output ->
output.outputFile = new File(output.outputFile.parent, output.outputFile.name.replace(output.outputFile.name, variant.flavorName + "-" + defaultConfig.versionName + "_v" + defaultConfig.versionCode + ".apk"))
}
}
}
}
productFlavors {
myspicyflavor {
applicationIdSuffix ".MySpicyFlavor"
signingConfig signingConfigs.debug
}
mystandardflavor {
applicationIdSuffix ".MyStandardFlavor"
signingConfig signingConfigs.config
}
}
}
以上提供了在 {app-root}/app/
中找到的以下 APK:
myspicyflavor-release-1.2.3_build5_v10.apk
mystandardflavor-release-1.2.3_build5_v10.apk
希望对大家有用。
更多信息,请参阅问题中提到的其他答案
在build.gradle(Module:app)
中添加以下代码android {
......
......
......
buildTypes {
release {
......
......
......
/*The is the code fot the template of release name*/
applicationVariants.all { variant ->
variant.outputs.each { output ->
def formattedDate = new Date().format('yyyy-MM-dd HH-mm')
def newName = "Your App Name " + formattedDate
output.outputFile = new File(output.outputFile.parent, newName)
}
}
}
}
}
发布版本名称将是您的应用程序名称 2018-03-31 12-34
在您的应用级别 gradle
添加android.applicationVariants.all
如下方块
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
lintOptions {
disable 'MissingTranslation'
}
signingConfig signingConfigs.release
android.applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = "${applicationId}_${versionCode}_${variant.flavorName}_${variant.buildType.name}.apk"
}
}
}
debug {
applicationIdSuffix '.debug'
versionNameSuffix '_debug'
}
}
2019/03/25 可用
android 工作室 4.1.1
applicationVariants.all { variant ->
variant.outputs.all { output ->
def reversion = "118"
def date = new java.text.SimpleDateFormat("yyyyMMdd").format(new Date())
def versionName = defaultConfig.versionName
outputFileName = "MyApp_${versionName}_${date}_${reversion}.apk"
}
}
较新的 android 工作室 Gradle
AppName 是您想要的应用名称,请替换它
variantName 将是默认选择的 variant 或 flavor
日期将是今天的日期,所以需要做任何更改只需粘贴它
applicationVariants.all { variant ->
variant.outputs.all {
def variantName = variant.name
def versionName = variant.versionName
def formattedDate = new Date().format('dd-MM-YYYY')
outputFileName = "AppName_${variantName}_D_${formattedDate}_V_${versionName}.apk"
}
}
输出:
AppName_release_D_26-04-2021_V_1.2.apk我意识到很多答案并不适合不同的 buildType,下面是我的处理方式。
applicationVariants.all { variant ->
variant.outputs.all {
def appVersionName = "${applicationId}v${versionCode}#${versionName}"
switch (buildType.name) {
case "debug": {
outputFileName = "${appVersionName}-staging.apk"
break
}
case "release": {
outputFileName = "${appVersionName}.apk"
break
}
}
}
}
applicationId、versionCode 和 versionName 等属性已在您的 defaultConfig 中定义。每当您生成 APK 时,您都可以轻松地格式化为赋予它更有意义和上下文命名的东西。
这就是它的生产方式。
com.delacrixmorgan-v1.0.0#1.apk
com.delacrixmorgan-v1.0.0#1-staging.apk
除此之外,如果你们想了解更多 Gradle。我在这篇 Medium 文章中进行了详细介绍。 Supercharging your Android Gradle
对于 flavors and split APK
这是 APK
文件的工作方式,而不是 Bundle / AAB files
android {
....
productFlavors {
aFlavor {
applicationId "com.a"
versionCode 5
versionName "1.0.5"
signingConfig signingConfigs.signingA
}
bFlavor {
applicationId "com.b"
versionCode 5
versionName "1.0.5"
signingConfig signingConfigs.signingB
}
cFlavor {
applicationId "com.c"
versionCode 3
versionName "1.0.3"
signingConfig signingConfigs.signingC
}
}
splits {
abi {
enable true
reset()
include 'arm64-v8a', 'x86', 'x86_64'
universalApk false
}
}
android.applicationVariants.all { variant ->
variant.outputs.all { output ->
// New one or Updated one
output.outputFileName = "${variant.getFlavorName()}-${variant.buildType.name}-v${versionCode}_${versionName}-${new Date().format('ddMMMyyyy_HH-mm')}-${output.getFilter(com.android.build.OutputFile.ABI)}.apk"
// Old one
// output.outputFileName = "${variant.buildType.name}-v${versionCode}_${versionName}-${new Date().format('ddMMMyyyy_HH-mm')}.apk"
}
}
}
结果
口味
发布
aFlavor-release-v5_1.0.5-16Jan2020_21-26-arm64-v8a.apk
aFlavor-release-v5_1.0.5-16Jan2020_21-26-x86_64.apk
aFlavor-release-v5_1.0.5-16Jan2020_21-26-x86.apk
调试
aFlavor-debug-v5_1.0.5-16Jan2020_21-26-arm64-v8a.apk
aFlavor-debug-v5_1.0.5-16Jan2020_21-26-x86_64.apk
aFlavor-debug-v5_1.0.5-16Jan2020_21-26-x86.apk
对于 bFlavor
与上面相似的名称只需将前缀aFlavor
更改为bFlavor
like
bFlavor-release-v5_1.0.5-16Jan2020_21-26-arm64-v8a.apk
对于 cFlavor
与上面类似的名称只需将前缀aFlavor
更改为cFlavor
并且,versionCode
和 versionName
cFlavor-release-v3_1.0.3-16Jan2020_21-26-arm64-v8a.apk
有关详细信息,请查看此
将此代码放入 build.gradle(app)
android {
.......
applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = "Name_of_App.apk"
}}
}
最简单的方法 - 在 build.gradle(app):
android {
compileSdk 31
project.archivesBaseName = "Scanner"
defaultConfig {
并且 - 您将收到:Scanner-release.apk