Skip to content

AGP 9 Migration: Implement proper custom APK naming pattern #579

@atick-faisal

Description

@atick-faisal

Problem

The old applicationVariants.all API for customizing APK output filenames was deprecated and removed in AGP 9. The previous implementation used:

applicationVariants.all {
    outputs.all {
        (this as BaseVariantOutputImpl).outputFileName = 
            "Jetpack_release_v${versionName}_${timestamp}.apk"
    }
}

This is no longer supported as:

  1. applicationVariants is replaced by androidComponents.onVariants
  2. Direct outputFile manipulation is removed
  3. BaseVariantOutputImpl is an internal deprecated API

Current State

Using default AGP naming scheme. Custom naming logic has been removed.

Location: app/build.gradle.kts

Recommended Solution

Implement AGP 9-compatible approach using one of these methods:

Option 1: Variant Artifacts API

androidComponents {
    onVariants { variant ->
        variant.artifacts.use(taskProvider)
            .wiredWith { it.apkFolder }
            .toTransform(SingleArtifact.APK)
    }
}

Option 2: Task Customization

tasks.named<PackageApplication>("package${variant.name.capitalize()}") {
    doLast {
        // Rename APK after packaging
    }
}

Desired Output Format

Jetpack_release_v{version}_{timestamp}.apk

Example: Jetpack_release_v1.2.7_2026_03_13_10_30_PM.apk

References

Labels

  • enhancement

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions