快速开始

本文介绍如何添加与发布管理功能相关的升级 SDK。添加 SDK 并完成相关配置后,在 mPaaS 控制台发布 App 的新版本,客户端可以通过升级接口检测到该新版本,进而提醒用户下载更新。

目前,升级 SDK 支持 原生 AAR 接入组件化接入 两种接入方式。

整个过程分为以下四步:

  1. 添加 SDK

  2. 工程配置

  3. 初始化 mPaaS(仅原生 AAR 接入需要)

  4. 升级检测

前置条件

添加 SDK

原生 AAR 方式

在工程中通过 组件管理(AAR) 在工程中安装 升级(UPGRADE)组件。更多信息,参考 管理组件依赖

组件化方式

在 Portal 和 Bundle 工程中通过 组件管理 安装 升级(UPGRADE) 组件。更多信息,参考 添加组件依赖

工程配置

配置 AndroidManifest

  1. AndroidManifest.xml 文件中添加以下权限:

     <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
  2. AndroidManifest.xml 文件中添加以下配置。

    将通配符 ${applicationId} 替换为真实的包名。例如,将 ${applicationId}.fileprovider 替换为 com.mpaas.mobiledeliveryservice.fileprovider

     <provider
     android:name="android.support.v4.content.FileProvider"
     android:authorities="${applicationId}.fileprovider"
     android:exported="false"
     android:grantUriPermissions="true">
     <meta-data
      android:name="android.support.FILE_PROVIDER_PATHS"
      android:resource="@xml/file_paths" />
     </provider>
    说明

    更多关于配置 AndroidManifest.xml 的信息,请参见 应用清单概览

  3. 在 Portal 工程主 module 的 src/main/res/xml 目录下创建文件 file_paths.xml,文件内容为:

     <?xml version="1.0" encoding="utf-8"?>
     <resources>
     <paths>
      <external-files-path
          name="download"
          path="com.alipay.android.phone.aliupgrade/downloads" />
      <external-path
          name="download_sdcard"
          path="ExtDataTunnel/files/com.alipay.android.phone.aliupgrade/downloads" />
     </paths>
     </resources>

添加资源

说明

如果您使用的是原生 AAR 接入方式,则需要将以下资源加入到您的应用当中,否则将无法正常使用升级组件。点击此处 获取资源文件。

其中,将 values 目录下 strings.xmlstyles.xmlcolors.xml 的内容合并即可。

初始化 mPaaS

如果您使用原生 AAR 接入方式,则需要初始化 mPaaS。

Application 对象中添加以下代码:

public class MyApplication extends Application {
    
    @Override
    public void onCreate() {
        super.onCreate();
        // mPaaS 初始化
        MP.init(this);    
    }
}

详情请参考:初始化 mPaaS

快速升级检测

快速检测新版本,仅返回检测结果:

MPUpgrade mMPUpgrade = new MPUpgrade();
// 同步方法,子线程中调用
int result = mMPUpgrade.fastCheckHasNewVersion();
if (result == UpgradeConstants.HAS_NEW_VERSION) {
  // 有新版本
} else if (result == UpgradeConstants.HAS_NO_NEW_VERSION) {
  // 没有新版本
} else if (result == UpgradeConstants.HAS_SOME_ERROR) {
  // 错误
}