全部產品
Search
文件中心

:切換工作空間(Workspace)

更新時間:Jul 13, 2024

應用開發過程中,常會有更換應用環境資訊或多套環境(即工作空間,Workspace)並行研發的需求。

mPaaS 提供的工具可協助您在開發過程中方便地進行環境切換。根據切換環境的需求不同,分為以下兩種方式:

靜態環境切換

前置條件

您已有基於 mPaaS 架構開發的 App。更多資訊參見 基於 mPaaS 架構 > 快速開始

在進行靜態環境切換時,需要使用到 easyconfigeasyconfig 的工作原理如下:

  • 能夠修改 AndroidManifest workspace 相關的 meta 屬性。

  • 修改 assets 下的 mpaas.properties 檔案。

  • 如果 mPaaS 工程設定檔中包涵 base64 屬性且屬性不為空白,會產生無線保鏢加密圖片 yw_1222.jpg

公用雲端

在公用雲端環境中,切換工作空間的步驟如下:

  1. 確保工程根目錄 build.gradle 檔案中,有如下依賴:

    說明

    因功能迭代,以下依賴的版本可能會不斷增大。

     classpath 'com.alipay.android:android-gradle-plugin:3.0.0.9.13'
     // 版本號碼必須大於 2.8.4
     classpath 'com.android.boost.easyconfig:easyconfig:2.8.4'
  2. 確保主工程(android main module)的 build.gradle 中有如下配置(請注意順序):

     apply plugin: 'com.alipay.portal'
     //位於 com.alipay.portal 之後即可
     apply plugin: 'com.alipay.apollo.baseline.update'
  3. 從控制台下載對應工作空間(Workspace)的 .config 設定檔。更多資訊,請參考 在控制台建立應用 > 下載設定檔

  4. 將下載的 .config 設定檔添加到主工程(android main module)路徑下。如下圖所示:

    修改11.png

    重要

    僅保留對應工作空間的設定檔即可。

專有雲

在專有環境中,切換工作空間的步驟如下:

  1. 確保工程根目錄 build.gradle 檔案中,有如下依賴:

    說明

    因功能迭代,以下依賴的版本可能會不斷增大。

     classpath 'com.alipay.android:android-gradle-plugin:3.0.0.9.13'
     // 版本號碼必須大於 2.8.4
     classpath 'com.android.boost.easyconfig:easyconfig:2.8.4'
  2. 確保主工程(android main module) 的 build.gradle 中有如下配置(需注意順序):

     apply plugin: 'com.alipay.portal'
     //位於 com.alipay.portal 之後即可
     apply plugin: 'com.alipay.apollo.baseline.update'
  3. 從控制台下載對應工作空間的 .config 設定檔。更多資訊參考 在控制台建立應用 > 下載設定檔

  4. 將下載的 .config 設定檔添加到主工程(android main module)路徑下。如下圖所示:

    修改22.png

    重要

    僅保留對應工作空間的設定檔即可。

  5. 使用 mPaaS 外掛程式產生 yw_1222.jpg 加密圖片。更多資訊參見 加密圖片(專有雲)

動態環境切換

動態環境切換指用戶端不重新打包的情況下,通過修改手機設定中環境選項,動態修改應用的環境資訊。

說明
  • 動態環境切換功能僅支援在專有雲環境下使用。

  • 動態環境切換適用於開發階段多套環境並存且頻繁切換的情境。

  • 採用動態環境切換時需要嚮應用寫入新環境的環境設定檔。因此在採用該方式時,您需要為應用申請檔案儲存體許可權。

由於 mPaaS 安全驗簽機制的限制,更新環境配置資訊會修改無線保鏢驗簽 yw_1222.jpg 圖片,因此動態切換環境有兩個限制:

  • 僅適用於開發階段,上線前請注意刪除對應的配置,否則 Release 包會報 RuntimeException 異常。

  • mPaaS 控制台需關閉網路請求驗簽開關,否則會因驗簽圖片資訊不對導致請求失敗。

    0

添加動態環境切換 SDK

  1. 添加依賴。

    • 原生 AAR 接入方式下,在工程主 module 下面的 build.gradle 設定檔中的 dependencies 中添加以下依賴:

      dependencies {
      ···
      implementation 'com.mpaas.mocksettings:mocksettings-build:10.1.60a.1575@aar'
      ···
      }
    • Portal&Bundle 接入方式下,在 Portal 工程主 module 下面的 build.gradle 設定檔中的 dependencies 中添加以下依賴:

      dependencies {
      ···
      bundle 'com.mpaas.mocksettings:mocksettings-build:1.0.0.200421111458@jar'
      manifest 'com.mpaas.mocksettings:mocksettings-build:1.0.0.200421111458:AndroidManifest@xml'
      ···
      }
  2. 使用 SDK。

    • 原生 AAR 接入方式下,重寫 Application 的 getPackageManager 方法,替換 PackageManagerMockSettingsPackageManager

      private MockSettingsPackageManager mockSettingsPackageManager;
      
      @Override
      public PackageManager getPackageManager() {
          if (mockSettingsPackageManager == null) {
              mockSettingsPackageManager = new MockSettingsPackageManager(this, super.getPackageManager());
          }
          return mockSettingsPackageManager;
      }
    • Portal&Bundle 接入方式下,將 Portal 工程主 module 下的 AndroidManifest.xml 中的 application 修改為:

      <application
           android:name="com.alipay.mobile.quinox.MockSettingsLauncherApplication"
           ···
           >
           ···
      </application>
  3. 添加以下許可權並確保運行時已動態申請:

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  4. 編譯 debug 包或在 AndroidManifest.xml 中開啟 debug 設定:

    <application
         android:debuggable="true"
         ···
         >
         ···
    </application>

動態切換

  1. 掃描二維碼下載 mPaaS 設定 App。

    1636438936 安裝完成後,顯示 mPaaS 設定 App 的表徵圖如下:

    app

  2. 將 mPaaS 控制台下載的 config 檔案放入手機 SD 記憶卡或內部儲存中。

  3. 添加環境。通過 mPaaS 設定 App 將 config 檔案添加到列表中。

    1. 開啟 mPaaS 設定 App。

    2. 點擊 環境列表 頁面底部的 添加環境設定檔

    3. 找到要添加的環境設定檔。

    4. 依次將兩個檔案(正式環境和測試環境)添加至環境列表。

  4. 切換環境。

    1. 選擇上圖中的一個環境,點擊 切換,將其選中為當前環境。

    2. 然後啟動該環境所對應的 App,測試請求可正常發送,說明環境切換成功。

      此時若切換到另一個環境,再重啟前一個環境所對應的 App,由於新的環境內沒有對應的 operationType,所以系統會報 3000 異常,這是已成功切換到另一個環境後的正常結果。