Wednesday 15 January 2020

How to Rename and Generate all APK & Bundle from Gradle with Product flavour and APK Splits

As I have tried these 2 ways (using a single at a time) to rename the APK

Option - One

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

Option - Two

(for this also tried to change the - variant.outputs.all to variant.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"
    }
}

When I use option One,

Issue - it generates all splits but it overrides the flavor config with the last flavor written in Gradle.

Also, try to put option One only once in defaultConfig but as productFlavours written after that it returns the null value in versionCode and versionName.

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

When I use option Two,

Issue - it generates the correct name but generates a single APK file.

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


from How to Rename and Generate all APK & Bundle from Gradle with Product flavour and APK Splits

No comments:

Post a Comment