Android: 如何在Gradle建立Build Variants及更換APK檔名
前言
- Build Variants
- 當Android開發者在建立APK時,有時會遇到需要建立不同環境的APK,而這些APK很有可能只是應用程式連接的資源或是URL不同。過去可能利用一個Config或Constant檔案,藉由旗標的判斷決定要使用哪些資源,再一個個切換並重新建立應用程式的APK,這實在非常麻煩。自從Android從Eclipse轉換至Android Studio後,藉由Gradle的設定,可以讓我們將應用程式做分類,這個分類可以在我們建立APK階段前,切換不同環境的應用程式,再連結對應的資源,這就是Build variants的好用之處。
- 更換APK名稱
- 因為本人在實務開發上,常常需要在釋出給QA團隊測試的APK附上版本及環境的特定資訊,但是這些手動建置實在耗時又擾人,所以我們也能利用Gradle來建置我們想要的APK名稱格式。
Build Variants的建立步驟
- 使用productFlavors
- 該如何在Gradle使用productFlavors?我們可以在Gradle檔案中採用以下結構來產生三個環境,分別是Development version,,Beta Version及Production Version,如下圖。
- 使用buildConfigField
- 加入之後,就可以連接我們所需的資源。例如我有一個URL,這個URL在這三種環境中,都有各自對應的內容,而這些資源的宣告可以透過buildConfigField來建立。
- 例如:buildConfigField 'String', 'URL', '"http://www.yahoo.com.tw"'
- 這段的意思就是宣告有個名為URL的變數,其型態為字串,而賦值為"http://www.yahoo.com.tw"。
- 完整的內容如下圖。
- 這時我們可以檢查Android Studio中的Build Variants,看看是否每個環境分別有Debug和Release版本,Debug和Release的差異就在Release版本會Sign過Release Key,這部分就不贅述,如下圖。
- 測試
- 我們可以利用BuildConfig來檢視三種環境的URL是否正確切換,如下圖。
- 利用Terminal來建立APK
- 除了利用Android Studio的介面來切換環境建立APK,也可以透過Terminal來下Gradle的指令建立這三個環境的應用程式。
- DevEnv
- gradle assembleDevEnvDebug / assembleDevEnvRelease
- BetaEnv
- gradle assembleBetaEnvDebug / assembleBetaEnvRelease
- ProEnv
- gradle assembleProEnvDebug / assembleProEnvRelease
- 全部的Debug/Release APK
- gradle assembleDebug / assembleRelease
- 透過這些指令,也能產生上述環境的APK,如下圖。
更換APK名稱的建立步驟
- 首先,我們先來制定所需的格式,這邊我定的APK檔名格式為 "專案縮寫名稱-正式版本名稱#內部測試版本名稱-環境-debug|release.apk",這是我期望釋出APK後,QA或PM從檔名中就能得知帶有什麼資訊。
- 例如:該專案名稱為Build-Variants-Sample(BVS),versionName為2.0.3,internalReleaseCode為#15,環境為DevEnv,版本為debug,所以建置出來的APK檔名如下所示。
- BVS-v2.0.3#15-DevEnv-debug.apk
- 利用Gradle的ext,宣告一個名為internalReleseCode的變數名稱,如下圖。
- 在defaultConfig為internalReleseCode變數賦值,這邊為#15,如下圖。
- 使用Gradle的setProterty建立archivesBaseName,如下圖。
沒有留言:
張貼留言