android - 如何使用 gradle 在 APK 文件名中设置 versionName?

标签 android build gradle apk android-gradle-plugin

我正在尝试在 gradle 自动生成的 APK 文件名中设置特定的版本号。

现在 gradle 生成 myapp-release.apk 但我希望它看起来像 myapp-release-1.0.apk

我尝试重命名看起来很乱的选项。有没有简单的方法来做到这一点?

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"))
    }
}

我尝试了上面的代码,但没有成功。有什么建议么? (使用 gradle 1.6)

最佳答案

我只需在一处更改版本名称。代码也很简单。

以下示例将创建名为 MyCompany-MyAppName-1.4.8-debug.apkMyCompany-MyAppName-1.4.8-release.apk 的 apk 文件,具体取决于在所选的构建变体上。

请注意,此解决方案适用于 APK 和 App Bundles (.aab files)

另请参阅:How to change the proguard mapping file name in gradle for Android project

#最近 Gradle 插件的解决方案

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)

我会在新版本出来时更新这篇文章。

#Solution 仅在 1.1.3-1.3.0 版本上测试 以下解决方案已使用以下 Android Gradle 插件版本进行测试:

  • 1.3.0 (2015/07/30) - 不工作,bug scheduled to be fixed in 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)

应用 gradle 文件:

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"
    }
}

关于android - 如何使用 gradle 在 APK 文件名中设置 versionName?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18332474/

相关文章:

rust - 测试溢出时忽略 Cargo build --release 选项

maven - Hot 通过cmd禁用buildnumber-maven-plugin

android - 在执行测试之前,如何要求gradlew卸载应用程序?

java - 如何根据点击的微调器更改字体大小

java - Android - 媒体播放器 : How to separating fastForward to another method (that later will be call)?

java - Android - 使用 fragment 扩展另一个类

java - 无法导入包 org.objectweb.asm

android - Ionic v2 构建应用程序

build - 创建标签时禁用 VSTS 构建触发器

android - 排行榜仍需要BaseGameUtils吗?