应用开发过程中,常会有更换应用环境信息或多套环境(即工作空间,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 异常,这是已成功切换到另一个环境后的正常结果。