如何使用产品风味和 APK 拆分从 Gradle 重命名和生成所有 APK 和捆绑包

Mih*_*edi 7 groovy android gradle android-studio build.gradle

因为我已经尝试了这两种方法(一次使用一个)来重命名 APK

选项 -

// To Change the APK and Bundle Name
archivesBaseName = "${name}-v${versionCode}_${versionName}-${new Date().format('ddMMMyyyy_HH-mm')}"
Run Code Online (Sandbox Code Playgroud)

选项 -两个

(为此也尝试将 - 更改variant.outputs.allvariant.outputs.each

android.applicationVariants.all { variant ->
    variant.outputs.all { output ->
        output.outputFileName = "${variant.buildType.name}-v${versionCode}_${versionName}-${new Date().format('ddMMMyyyy_HH-mm')}.apk"
    }
}
Run Code Online (Sandbox Code Playgroud)

当我使用选项一时

问题- 它生成所有拆分,但它会使用 Gradle 中编写的最后一个风味覆盖风味配置。

另外,尽量看跌期权一个在只有一次defaultConfig,但因为它返回后写productFlavoursnull价值versionCodeversionName

productFlavors {
    aFlavor {
        applicationId "com.a"
        
        versionCode 5
        versionName "1.0.5"

        signingConfig signingConfigs.signingA

        // To Change the APK and Bundle Name
        archivesBaseName = "${name}-v${versionCode}_${versionName}-${new Date().format('ddMMMyyyy_HH-mm')}"
    }
    bFlavor {
        applicationId "com.b"

        versionCode 5
        versionName "1.0.5"

        signingConfig signingConfigs.signingB

        // To Change the APK and Bundle Name
        archivesBaseName = "${name}-v${versionCode}_${versionName}-${new Date().format('ddMMMyyyy_HH-mm')}"
    }
    cFlavor {
        applicationId "com.c"

        versionCode 3
        versionName "1.0.3"

        signingConfig signingConfigs.signingC

        // To Change the APK and Bundle Name
        archivesBaseName = "${name}-v${versionCode}_${versionName}-${new Date().format('ddMMMyyyy_HH-mm')}"
    }
}
Run Code Online (Sandbox Code Playgroud)

当我使用选项二时

问题- 它生成正确的名称但生成单个 APK 文件。

splits {
    abi {
        enable true
        reset()
        include 'arm64-v8a', 'x86', 'x86_64'
        universalApk false
    }
}

android.applicationVariants.all { variant ->
    variant.outputs.all { output ->
        output.outputFileName = "${variant.buildType.name}-v${versionCode}_${versionName}-${new Date().format('ddMMMyyyy_HH-mm')}.apk"
    }
}
Run Code Online (Sandbox Code Playgroud)

捆绑包问题- 无法使用选项重命名捆绑包。

Mih*_*edi 5

根据这个答案,您可以进行Option - Two一些细微的更改,如下所述仅适用于APK,不适用于Bundle / AAB files(对于捆绑包,请参阅此答案

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"
    }
}
Run Code Online (Sandbox Code Playgroud)

另外,从每个风味块中删除该行

// To Change the APK and Bundle Name
archivesBaseName = "${name}-v${versionCode}_${versionName}-${new Date().format('ddMMMyyyy_HH-mm')}"
Run Code Online (Sandbox Code Playgroud)

这样,你就可以得到这样的输出文件名

为了味道

  • 发布

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

对于 b 风味

与上面类似的名称只需将前缀更改aFlavorbFlavorlike

bFlavor-release-v5_1.0.5-16Jan2020_21-26-arm64-v8a.apk

对于 cFlavor

与上面类似的名称只需将前缀更改aFlavorcFlavor and即可versionCodeversionName

cFlavor-release-v3_1.0.3-16Jan2020_21-26-arm64-v8a.apk