在開發 App 的過程中,常常需要產出不同版本的 APK,給團隊成員或測試人員驗證功能。 這時候,「快速辨識版本」就變成一件非常重要的事了。

最常見、也最直接的方法,就是利用 Gradle 的 versionNameSuffix,在 App 的版本名稱後面自動加上一些額外資訊。 以我們團隊的習慣來說,我們會直接加上Build 當下的時間作為版本流水號,這樣每個 APK 都能有獨一無二的識別。但如果每次出新版本,都還要手動去改 Gradle 設定,實在是有點麻煩。

下面就分享一個簡單的做法,讓 Gradle 在每次 Build 的時候,自動把「打包時間」加到版本名稱後面。

程式碼範例

Groovy 寫法

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
// 產生日期時間字串
def getDate() {
    def date = new Date()
    def formattedDate = date.format('yyyyMMddHHmmss')
    return formattedDate
}

// 在buildType中就可使用
debug {
   applicationIdSuffix '.debug'
   // 設定版本名稱後綴
   versionNameSuffix '-dev' + ' (' + getDate() + ')' 
   // 其他設定...
}

Kotlin DSL (KTS) 寫法

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
android {  
    // 其他設定...
    buildTypes {
	    // 略...
        debug {
            isMinifyEnabled = false  
            applicationIdSuffix = ".dev"  
            // 設定版本名稱後綴
            versionNameSuffix = "-dev (${getDate()})"  
        }    
    } 
}

/**  
 * 取得目前的日期時間字串
 *  
 * @return  
 */  
fun getDate(): String {  
    val date = Calendar.getInstance().time
    val formatter = SimpleDateFormat("yyyyMMdd-HHmm", Locale.getDefault())  
    return formatter.format(date)  
}

這樣設好之後,每次打包 Debug 版 APK,都會自動帶上像 -dev(20250428-1430) 這種字串, 讓相關人員清楚知道這份檔案是什麼時候打包的。

參考來源