如何在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
相关产品推荐
相关产品推荐

