android-studio - 如何设置特定于 flavor 和构建类型的 APK 文件名?

标签 android-studio android-gradle-plugin build.gradle android-productflavors

对于 Android Studio 中的 Gradle: 有很多帖子解释如何根据构建类型设置 APK 文件名。我不记得我是否找到任何解释如何根据口味来做这件事。没有人解释如何基于两者来做到这一点。

我有 6 种风格,当然还有 2 种构建类型(调试和发布)。我需要为每种风格指定不同的 APK 文件名,仅用于发布。

所有调试版本都应使用正常的默认 APK 文件名。

如果我的口味是 A、B、C、D、E 和 F;那么只有当我构建发布版本时,我才希望 APK 文件为 A.apk、B.apk 等。

最佳答案

我已经编写了这段代码,它有助于根据您的要求构建 apk 名称。请注意,它位于“android”元素内部,作为“buildTypes”和“productFlavors”的同级元素:

android {
    ...

    buildTypes {
        release {
            ...
        }
        debug {
            ...
        }
    }
    productFlavors {
        A {
            ...
        }
        B {
            ...
        }
        C {
            ...
        }
    }
    applicationVariants.all { variant ->
        def buildType = variant.variantData.variantConfiguration.buildType.name

        if (buildType == android.buildTypes.release.name) {
            variant.outputs.each { output ->
                def flavour = variant.productFlavors[0].name
                def newName = flavour + ".apk"
                output.outputFile = new File(output.outputFile.parent, newName)
            }
        }
    }
}

我定义变量:

  • buildType:您在“构建变体”选项卡中选择的构建类型的名称。
  • flavor :您在“构建变体”选项卡中选择的 flavor 名称。

“if”条件检查您是否正在构建 buildType“release”,因此 apk 名称仅在这种情况下发生更改。

关于android-studio - 如何设置特定于 flavor 和构建类型的 APK 文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32173830/

相关文章:

java - 为什么gradle创建的jar文件中没有.class文件?

c++ - 构建 C/C++ 代码时的 Gradle 编译器输出

java - 尝试为 React Native 项目构建 APK 文件时出错

android - 无法在 android studio 中从版本 2.1.1 更新到 2.2 预览版

java - 无法合并Dex Android

android - 在build.gradle中导出环境变量

gradle - Gradle doFirst不更新WAR文件

android - 在android数据绑定(bind)中找不到符号BR

android - 无法删除布局边距

android - 检测 gradle 何时在 Android Studio 中运行