應用開發過程中,常會有更換應用環境資訊或多套環境(即工作空間,Workspace)並行研發的需求。
mPaaS 提供的工具可協助您在開發過程中方便地進行環境切換。根據切換環境的需求不同,分為以下兩種方式:
靜態環境切換
前置條件
您已有基於 mPaaS 架構開發的 App。更多資訊參見 基於 mPaaS 架構 > 快速開始。
在進行靜態環境切換時,需要使用到 easyconfig
,easyconfig
的工作原理如下:
能夠修改
AndroidManifest workspace
相關的meta
屬性。修改
assets
下的mpaas.properties
檔案。如果
mPaaS
工程設定檔中包涵base64
屬性且屬性不為空白,會產生無線保鏢加密圖片yw_1222.jpg
。
公用雲端
在公用雲端環境中,切換工作空間的步驟如下:
確保工程根目錄
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'
確保主工程(
android main module
)的build.gradle
中有如下配置(請注意順序):apply plugin: 'com.alipay.portal' //位於 com.alipay.portal 之後即可 apply plugin: 'com.alipay.apollo.baseline.update'
從控制台下載對應工作空間(Workspace)的
.config
設定檔。更多資訊,請參考 在控制台建立應用 > 下載設定檔。將下載的
.config
設定檔添加到主工程(android main module
)路徑下。如下圖所示:重要僅保留對應工作空間的設定檔即可。
專有雲
在專有環境中,切換工作空間的步驟如下:
確保工程根目錄
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'
確保主工程(
android main module
) 的build.gradle
中有如下配置(需注意順序):apply plugin: 'com.alipay.portal' //位於 com.alipay.portal 之後即可 apply plugin: 'com.alipay.apollo.baseline.update'
從控制台下載對應工作空間的
.config
設定檔。更多資訊參考 在控制台建立應用 > 下載設定檔。將下載的
.config
設定檔添加到主工程(android main module
)路徑下。如下圖所示:重要僅保留對應工作空間的設定檔即可。
使用 mPaaS 外掛程式產生
yw_1222.jpg
加密圖片。更多資訊參見 加密圖片(專有雲)。
動態環境切換
動態環境切換指用戶端不重新打包的情況下,通過修改手機設定中環境選項,動態修改應用的環境資訊。
動態環境切換功能僅支援在專有雲環境下使用。
動態環境切換適用於開發階段多套環境並存且頻繁切換的情境。
採用動態環境切換時需要嚮應用寫入新環境的環境設定檔。因此在採用該方式時,您需要為應用申請檔案儲存體許可權。
由於 mPaaS 安全驗簽機制的限制,更新環境配置資訊會修改無線保鏢驗簽 yw_1222.jpg
圖片,因此動態切換環境有兩個限制:
僅適用於開發階段,上線前請注意刪除對應的配置,否則 Release 包會報
RuntimeException
異常。mPaaS 控制台需關閉網路請求驗簽開關,否則會因驗簽圖片資訊不對導致請求失敗。
添加動態環境切換 SDK
添加依賴。
原生 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' ··· }
使用 SDK。
原生 AAR 接入方式下,重寫 Application 的
getPackageManager
方法,替換PackageManager
為MockSettingsPackageManager
。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>
添加以下許可權並確保運行時已動態申請:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
編譯 debug 包或在
AndroidManifest.xml
中開啟 debug 設定:<application android:debuggable="true" ··· > ··· </application>
動態切換
掃描二維碼下載 mPaaS 設定 App。
安裝完成後,顯示 mPaaS 設定 App 的表徵圖如下:
將 mPaaS 控制台下載的
config
檔案放入手機 SD 記憶卡或內部儲存中。添加環境。通過 mPaaS 設定 App 將
config
檔案添加到列表中。開啟 mPaaS 設定 App。
點擊 環境列表 頁面底部的 添加環境設定檔。
找到要添加的環境設定檔。
依次將兩個檔案(正式環境和測試環境)添加至環境列表。
切換環境。
選擇上圖中的一個環境,點擊 切換,將其選中為當前環境。
然後啟動該環境所對應的 App,測試請求可正常發送,說明環境切換成功。
此時若切換到另一個環境,再重啟前一個環境所對應的 App,由於新的環境內沒有對應的 operationType,所以系統會報 3000 異常,這是已成功切換到另一個環境後的正常結果。