切换工作空间(Workspace)

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