切换工作空间(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.7.5
     classpath 'com.android.boost.easyconfig:easyconfig:2.7.5'
  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)路径下。如下图所示:p349201

    重要

    仅保留对应工作空间的配置文件即可。

专有云

在专有环境中,切换工作空间的步骤如下:

  1. 确保工程根目录 build.gradle 文件中,有如下依赖:

    说明

    因功能迭代,以下依赖的版本可能会不断增大。

     classpath 'com.alipay.android:android-gradle-plugin:3.0.0.9.13'
     // 版本号必须大于 2.7.5
     classpath 'com.android.boost.easyconfig:easyconfig:2.7.5'
  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)路径下。如下图所示:p349201

    重要

    仅保留对应工作空间的配置文件即可。

  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 异常,这是已成功切换到另一个环境后的正常结果。

阿里云首页 移动开发平台 mPaaS 相关技术圈