当前位置: 首页 > 知识库问答 >
问题:

如何使用Gradle在APK文件名中设置versionName?

归鹤龄
2023-03-14
buildTypes {
    release {
       signingConfig signingConfigs.release
       applicationVariants.each { variant ->
       def file = variant.outputFile
       variant.outputFile = new File(file.parent, file.name.replace(".apk", "-" +    defaultConfig.versionName + ".apk"))
    }
}

我已经尝试了上面的代码,但没有运气。有什么建议吗?(使用分级1.6)

共有1个答案

狄海
2023-03-14

我只需要在一个地方更改版本名。代码也很简单。

下面的示例将创建名为mycompany-myappname-1.4.8-debug.apk或mycompany-myappname-1.4.8-release.apk的apk文件,具体取决于所选的构建变体。

注意,这个解决方案同时适用于APK和App Bundles(.aab文件)。

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"
    defaultConfig {
        applicationId "com.company.app"
        minSdkVersion 13
        targetSdkVersion 21
        versionCode 14       // increment with every release
        versionName '1.4.8'   // change with every release
        setProperty("archivesBaseName", "MyCompany-MyAppName-$versionName")
    }
}

以上解决方案已经用以下Android Gradle插件版本进行了测试:

  • 3.6.4(2020年8月)
  • 3.5.2(2019年11月)
  • 3.3.0(2019年1月)
  • 3.1.0(2018年3月)
  • 3.0.1(2017年11月)
  • 3.0.0(2017年10月)
  • 2.3.2(2017年5月)
  • 2.3.1(2017年4月)
  • 2.3.0(2017年2月)
  • 2.2.3(2016年12月)
  • 2.2.2
  • 2.2.0(2016年9月)
  • 2.1.3(2016年8月)
  • 2.1.2
  • 2.0.0(2016年4月)
  • 1.5.0(2015/11/12)
  • 1.4.0-beta6(2015/10/05)
  • 1.3.1(2015/08/11)

随着新版本的发布,我将更新这篇文章。

#解决方案只在版本1.1.3-1.3.0上测试。以下解决方案已经用以下Android Gradle插件版本测试过:

  • 1.3.0(2015/07/30)-不工作,bug计划在1.3.1中修复
  • 1.2.3(2015/07/21)
  • 1.2.2(2015/04/28)
  • 1.2.1(2015/04/27)
  • 1.2.0(2015/04/26)
  • 1.2.0-beta1(2015/03/25)
  • 1.1.3(2015/03/06)

应用程序分级文件:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"
    defaultConfig {
        applicationId "com.company.app"
        minSdkVersion 13
        targetSdkVersion 21
        versionCode 14       // increment with every release
        versionName '1.4.8'   // change with every release
        archivesBaseName = "MyCompany-MyAppName-$versionName"
    }
}
 类似资料:
  • 我想让我的Gradle构建使用Gradle创建一个发行版签名的apk文件。 我不确定代码是正确的,还是在执行时缺少了一个参数? 这是我的gradle文件中的一些代码: gradle构建成功完成,在我的文件夹中,我只看到和文件。 对如何解决这个问题有什么建议吗?

  • 我在谷歌上搜索过,但找不到我的答案。 这是我第一次使用gradle系统,我现在正在生成一个签名的APK以上传到google play(Project是从eclipse导入的)。 现在我已经阅读了以下部分:http://tools.android.com/tech-docs/new-build-system/user-guide#toc-building-and-tasks that you sho

  • 我使用eclipse和ant构建系统。在我的项目根中,我有一个project.Properties文件,其中包含Proguard.config设置。此设置在sdk示例中表示为 proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

  • 问题内容: 我想使用带有以下条目的application.properties文件设置配置文件: 如何在我的context.xml文件中设置spring.profiles.active?init-param仅在web.xml上下文中有效。 问题答案: 有几种更改活动配置文件的方法,这些方法都不直接取自属性文件。 您可以像在问题中一样使用。 您可以在应用程序启动时提供系统参数 你可以得到从你和编程方

  • 我有一个密钥库文件,其中有两个密钥:一个用于调试构建,另一个用于发布构建类型。因此,我的gradle构建脚本根据需要生成两个APK。现在,要部署调试构建apk,android gradle插件中有installDebug任务,但是部署发布构建apk怎么样?Andorid gradle插件没有像installRelease这样的任务。如何使用gradle将版本构建apk直接部署到连接的设备?

  • 在我的情况下,旧的apk文件名包含未对齐和未签名的签名信息。这些旧文件名在模块 gradle 文件中使用此方法重命名: 版本代码和版本名称设置如下: 在此重命名的结果中,签名信息(未对齐或未签名)位于变体版本代码之前。 现在我使用的是gradle:3.0.0-beta6。因此,我无法再使用旧方法,因为outputFile已更改为只读,无法重命名。现在我尝试向gradle添加一个新的重命名方法,如下