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

我正在尝试在 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"
    }
}

https://stackoverflow.com/questions/18332474/

相关文章:

groovy - 停止 Gradle 构建的推荐方法

security - Docker 和保护密码

android - 在圆圈 ci 中找不到 com.android.tools.build :gra

java - Gradle 没有找到 tools.jar

C++ 构建系统 - 使用什么?

c# - 我如何以及为什么要设置 C# 构建机器?

ios - 如何在构建 IPA 时修复 Xcode 6.1 错误

xcode - Xcode 的构建文件夹在哪里?

c++ - 如何为 Visual Studio 2010 构建 Qt

ios - Xcode 在每次击键后继续构建 Storyboard