← Back to list

Android 開發 | 讓 Gradle 自動為 AAR、AAB、APK 設定客製化檔名

每次打包 AAB 或 APK,Android Studio 預設都會產出像 app-release.aab 或 app-debug.apk 這類的檔案名稱。這種預設命名在使用 Firebase App Distribution 或 Google Play…

Daniel Huang · 2025-04-29 16:00 · 0 claps · 4.6 min read
#androiddev #gradle #apk #aab #ara
Open on Medium ↗

Android 開發 | 讓 Gradle 自動為 AAR、AAB、APK 設定客製化檔名

每次打包 AAB 或 APK,Android Studio 預設都會產出像 app-release.aabapp-debug.apk 這類的檔案名稱。這種預設命名在使用 Firebase App Distribution 或 Google Play 內部測試流程時,雖然不太會造成困擾,但如果你需要將 APK 或 AAB 檔案直接提供給 PM、QA 或外部合作夥伴安裝測試,那麼能夠一眼看出檔案版本與類型,會讓流程更順暢也更不容易搞混。

本文將示範如何透過 Gradle 設定,讓你在打包時自動加上版本號、Build Type 等資訊,生成便於辨識的輸出檔名。

設定方式

你可以根據不同的產出檔案類型(AAB、APK、AAR),在 app module 或 library module 的 build.gradle 中加入以下設定。

AAB:變更 App Bundle 檔名

build.gradle(app module)中 android 區塊內加入以下設定:

android {
    // 其他設定省略...
    setProperty("archivesBaseName", "taiwanNo1")
}

BTW: setProperty(key, value) 在 groovy 與 kts 都是通用的。

🚨 注意: 這個設定只會影響輸出檔案名稱的前綴,並不會完整覆蓋檔名結構。例如:

原始檔名:app-release.aab
變更後:taiwanNo1-release.aab

💡 為什麼使用 archivesBaseName ? 因為目前 Gradle 尚未提供官方 API 可以直接命名 AAB 檔。 archivesBaseName 是 Gradle 用來設定各類 archives 類檔案輸出名稱的共通屬性。 所謂的 archives 檔案包含: APK、AAR、JAR、ZIP 等。

參考資料: StackOverflow: How to change the generated filename for App Bundles with Gradle?

APK:自訂 APK 輸出檔案名稱

同樣在 build.gradle (app)android 區塊中,加入以下設定,即可針對每個 Variant 輸出不同名稱的 APK:

Groovy

applicationVariants.configureEach { variant ->
    variant.outputs.configureEach {output ->
        def variantName = variant.name
        def versionName = variant.versionName
        def versionCode = variant.versionCode
     // 這裡的 archivesBaseName 可以透過前述的 setProperty() override
        outputFileName = "${archivesBaseName}-${versionName}.apk"
    }
}

KTS

Updated on 2025/05/14

// (非必要) 預設是專案名稱
setProperty("archivesBaseName", "taiwanNo1")

// 主要設定是這個區塊
applicationVariants.configureEach {  
    val variant = this  
    outputs.configureEach {  
        if (this is ApkVariantOutputImpl) {  
            val output: ApkVariantOutputImpl = this  
            val variantName = variant.name  
            val versionName = variant.versionName  
            val versionCode = variant.versionCode  
   val archivesBaseName = project.properties["archivesBaseName"]
            output.outputFileName = "$archivesBaseName-${versionName}.apk"
        }  
    }  
}

這樣打包出來的 APK,會長這樣的格式:

taiwanNo1-1.0.3-release.apk
taiwanNo1-1.0.3-debug.apk

清楚標示版本與 build type,對團隊來說超級友善。

AAR:變更 Library 模組輸出檔名

如果你是在開發 Android Library(非應用程式),也可以使用相似的方式客製 AAR 檔名。

build.gradle (library)android 區塊中加入以下設定,差別只在於 Variant 類型需改用 libraryVariants

libraryVariants.configureEach { variants ->  
    variants.outputs.all { output ->  
        // 原本 Library 名稱-BuildType 名稱-版本名
        outputFileName = "${archivesBaseName}-${variants.name}-${defaultConfig.versionName}.aar"  
    }  
}

設定完成後,打包出來的檔案會像這樣:

taiwanNo1-release-1.0.0.aar

這樣的檔名客製化看似只是小細節,但對於多人協作、測試流程管理、甚至上架備份流程來說,都是一種品質與效率的提升。如果你常需要手動改檔名、加版本號,那真的建議一次設定好 Gradle,未來就可以安心自動化產出好讀、好用的檔案名稱。

Originally published at https://dh46tw.github.io on April 29, 2025.


메타데이터
post_id
e4a69d742cbe
slug
android-開發-讓-gradle-自動為-aar-aab-apk-設定客製化檔名-e4a69d742cbe
url
https://medium.com/@dh46tw/android-%E9%96%8B%E7%99%BC-%E8%AE%93-gradle-%E8%87%AA%E5%8B%95%E7%82%BA-aar-aab-apk-%E8%A8%AD%E5%AE%9A%E5%AE%A2%E8%A3%BD%E5%8C%96%E6%AA%94%E5%90%8D-e4a69d742cbe
canonical_url
https://medium.com/@dh46tw/android-%E9%96%8B%E7%99%BC-%E8%AE%93-gradle-%E8%87%AA%E5%8B%95%E7%82%BA-aar-aab-apk-%E8%A8%AD%E5%AE%9A%E5%AE%A2%E8%A3%BD%E5%8C%96%E6%AA%94%E5%90%8D-e4a69d742cbe
author_url
https://medium.com/@dh46tw
status
ok
fetched_at
2026-07-20 03:36:17