全部产品

Android 小程序接入真机预览与调试

更新时间:2020-10-19 11:04:15

说明:仅在 mPaaS 10.1.60 及以上版本中支持。

接入真机预览和调试功能步骤如下:

  1. H5 容器配置文件 (在示例工程中名为 custom_config.json)中加入 h5_remote_debug_host 的值,此值为调试通信的服务器地址。
    1. 打开您从 mPaaS 控制台下载的名为 config.json小程序 IDE 配置文件,找到 debug_url 字段。配置文件示例如下:
      1. {
      2. "login_url":"https://mappcenter.cloud.alipay.com/ide/login",
      3. "uuid_url":"http://cn-hangzhou-mproxy.cloud.alipay.com/switch/uuid",
      4. "debug_url":"wss://cn-hangzhou-mproxy.cloud.alipay.com",
      5. "sign":"3decfd66c2924489204b4b0f38a9c228",
      6. "upload_url":"https://mappcenter.cloud.alipay.com/ide/mappcenter/mds"
      7. }
    2. 随后在工程的 custom_config.json 中添加 h5_remote_debug_hostkeyh5_remote_debug_hostvalue 为 上方配置文件中的 debug_url 字段,并在末尾加上 /host/,示例如下:
      1. [
      2. {
      3. "key": "h5_remote_debug_host",
      4. "value": "wss://cn-hangzhou-mproxy.cloud.alipay.com/host/"
      5. }
      6. ]
  2. 设置虚拟域名。
    1. 在 mPaaS 控制台中,点击 小程序 > 小程序发布 > 配置管理,在 域名管理 中可获取您之前填写的虚拟域名。
      vhost
    2. 在工程中打开 MyApplication,在应用启动或启动小程序前调用 tinyHelper.setTinyAppVHost 方法设置小程序所使用的虚拟域名,代码示例如下:
      说明:需将下方代码示例中的 demo.com 替换为您所设置的虚拟域名。
      1. MPTinyHelper tinyHelper = MPTinyHelper.getInstance();
      2. tinyHelper.setTinyAppVHost("demo.com");
  3. 设置白名单。
    使用真机预览和调试功能时,客户端需要配置用户唯一标识。即根据应用实际情况,在 userId 方法中返回 App 的唯一标识,例如用户名、手机号、邮箱等。
    在设置虚拟域名的代码下方,添加如下代码。后续在小程序 IDE 插件的 配置白名单 中填入的值,需与此处配置的 userId 保持一致。
    1. MPLogger.setUserId("your userId");
  4. 接入扫码组件并解析预览或调试的二维码,解析二维码并启动小程序的代码如下:
    • 如果您使用的是 10.1.68.6 及以上版本的基线,请使用如下代码进行解析。您可以在 mPaaS 插件 mPaaS > 组件管理 菜单下查看准确的基线版本号。
      1. //第一个参数为二维码的 uri,第二个参数为自定义启动参数。若无自定义启动参数则填 new Bundle()。
      2. MPTinyHelper.getInstance().launchIdeQRCode(uri, new Bundle());
    • 如果您使用的是 10.1.68.6 以下或 10.1.60 版本的基线,请使用如下代码进行解析。
      1. // uri 是二维码对应的内容
      2. String scheme = uri.getScheme();
      3. if ("mpaas".equals(scheme)) {
      4. Bundle params = new Bundle();
      5. String appId = uri.getQueryParameter("appId");
      6. for (String key : uri.getQueryParameterNames()) {
      7. if (!"appId".equalsIgnoreCase(key)) {
      8. params.putString(key, uri.getQueryParameter(key));
      9. }
      10. }
      11. LauncherApplicationAgent.getInstance().getMicroApplicationContext()
      12. startApp(null, appId, params);
      13. }