You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在build.gradle.kts中修改Android App Bundle/APK文件名,含应用名、版本及构建类型

如何在build.gradle.kts中自定义Android APK/AAB文件名,包含应用名称、版本和构建类型

要自定义APK和AAB的输出文件名,你可以在android代码块中添加变体处理逻辑,通过遍历构建变体来修改输出文件的名称。下面是修改后的完整build.gradle.kts代码:

android {
    namespace = "com.example.app"
    compileSdk = 34

    val prop = Properties().apply {
        load(FileInputStream(File(rootProject.rootDir, "keystore.properties")))
    }

    signingConfigs {
        create("my_sign") {
            storeFile = file(prop.getProperty("storeFile"))
            storePassword = prop.getProperty("storePassword").toString()
            keyPassword = prop.getProperty("keyPassword").toString()
            keyAlias = prop.getProperty("keyAlias").toString()
        }
    }

    defaultConfig {
        applicationId = "com.example.app"
        minSdk = 24
        targetSdk = 34
        versionCode = 1
        versionName = "1.0.0"

        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
        vectorDrawables {
            useSupportLibrary = true
        }
        signingConfig = signingConfigs.getByName("my_sign")
    }

    buildTypes {
        release {
            isMinifyEnabled = true
            isShrinkResources = true
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )
        }
        debug {
            isMinifyEnabled = false
            isShrinkResources = false
        }
    }

    // 自定义APK文件名
    applicationVariants.all {
        val appName = "MyApp" // 也可以从strings.xml获取:resources.getString(R.string.app_name)
        val versionInfo = "${defaultConfig.versionCode}-${defaultConfig.versionName}"
        val buildType = buildType.name
        outputFileName = "${appName}_v${versionInfo}_${buildType}.apk"
    }

    // 自定义AAB文件名
    bundleVariants.all {
        val appName = "MyApp" // 同样可以从strings.xml获取
        val versionInfo = "${defaultConfig.versionCode}-${defaultConfig.versionName}"
        val buildType = buildType.name
        outputFileName = "${appName}_v${versionInfo}_${buildType}.aab"
    }
}

关键说明:

  • 应用名称:代码中直接写死了MyApp,如果想从strings.xml中获取应用名称,可以替换为resources.getString(R.string.app_name),注意多语言场景下会取默认语言的名称。
  • 版本信息:结合了versionCode和versionName,方便区分不同版本(比如1-1.0.0),你可以根据需求调整格式,比如只保留versionName。
  • 构建类型:自动获取当前的构建类型(release/debug),无需手动修改。
  • 扩展名区分:APK用.apk后缀,AAB用.aab后缀,确保两种产物都能正确命名。

修改建议:

  • 如果应用名称包含空格或特殊字符,可用replace(" ", "_")替换,比如appName.replace(" ", "_"),避免文件名出现异常。
  • 如果项目有产品风味(productFlavors),还可以添加风味信息到文件名中,比如val flavorName = productFlavors[0].name,再拼接到文件名里。
  • 如需指定输出目录,可在修改outputFileName的同时设置outputDirectory,比如outputs.all { output -> output.outputDirectory = file("$rootDir/build/custom-outputs") }。

内容的提问来源于stack exchange,提问作者Alfin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 19:50:32