2016年10月11日 星期二

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是否正確切換,如下圖。
      • DevEnv

      • BetaEnv

      • ProEnv

    • 檢查建立出來的APK是否也有相對應的名稱

    • 利用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,如下圖。

  • 建立APK檢視檔名,如下圖。

沒有留言:

張貼留言