全部产品
Search
文档中心

移动开发平台mPaaS:小程序基础库说明

更新时间:Apr 11, 2022

小程序能力需要客户端来支撑:

基础库与客户端的关系

小程序能力需要客户端来支撑:

  • 每一版基础库新增能力都需要运行在特定版本及以上的客户端中。

  • 高版本基础库的某些新能力无法兼容低版本客户端。

关于基础库兼容方法,参见 兼容基础库。您可以通过 my.SDKVersion 查看当前基础库版本号。

兼容基础库

现阶段,小程序组件和 API 能力正在逐步完善和丰富,但是老版本客户端并不支持这些新增的能力,因此建议开发者做对应的兼容性处理。

您可通过接口 my.canIUse(String) 实现兼容性判断,详见 接口说明

兼容示例

新增 API 兼容性处理

对于新增 API,可以参照下面的代码来判断当前基础库是否支持该 API:

if (my.getLocation) {
    my.getLocation();
} else {
// 如果希望用户在最新版本的客户端上体验您的小程序,可以这样提示
  my.alert({
    title: '提示',
    content: '当前版本过低,无法使用此功能,请升级最新版本'
  });
}

API 新增参数兼容性处理

对于 API 新增参数,可通过如下方式判断是否支持,并写入您的后续处理方式:

if (my.canIUse('getLocation.object.type')) {
    // 在此处写入您的后续处理方式
} else {
    console.log('当前版本不支持该参数')
}

API 新增返回值兼容性处理

对于 API 新增返回值,可通过如下方式判断是否支持,并写入您的后续处理方式:

if (my.canIUse('getSystemInfo.return.storage')) {
    // 在此处写入您的后续处理方式
} else {
    console.log('当前版本不支持该返回值')
}

组件新增属性兼容性处理

组件新增属性在旧版本客户端上无法实现,但也不会报错。若要对属性做降级处理可参见以下代码:

Page({
    data: {
        canIUse: my.canIUse('button.open-type.share')
    }
})

基础库版本

基础库版本

基础库对应基线版本

1.9.0

10.1.32

下载地址

1.14.1

10.1.60

下载地址

基础库集成说明

iOS

iOS 中无需进行基础库集成。

Android

由于基线版本的迭代,不同的基线版本需要采用不同的集成基础库的方式。在集成基础库前,请确认您的基线版本。

10.1.68.7 及以后的基线版本

在启动时设置该 Provider 实例。示例代码如下:

H5Utils.setProvider(H5AppCenterPresetProvider.class.getName(),new TinyAppCenterPresetProvider());
说明

如果客户端中有使用 H5 公共资源包,需要继承 TinyAppCenterPresetProvider 类,并将公共资源包相关代码合并至继承的类的实例中。

10.1.60 系列、10.1.68.6 及以前的基线版本

  1. 实现 H5AppCenterPresetProvider 接口类。代码示例如下:

     package com.mpaas.demo.nebula;
    
     import com.alipay.mobile.nebula.appcenter.H5PresetInfo;
     import com.alipay.mobile.nebula.appcenter.H5PresetPkg;
     import com.alipay.mobile.nebula.provider.H5AppCenterPresetProvider;
    
     import java.io.File;
     import java.io.InputStream;
     import java.util.HashMap;
     import java.util.HashSet;
     import java.util.Map;
     import java.util.Set;
    
     public class H5AppCenterPresetProviderImpl implements H5AppCenterPresetProvider {
         private static final String TAG = "H5AppCenterPresetProviderImpl";
    
         // 设置小程序专用资源包,此 ID 固定,不可设置其他值
         private static final String TINY_COMMON_APP = "66666692";
    
         // 预置包的 asset 目录
         private final static String NEBULA_APPS_PRE_INSTALL = "nebulaPreset" + File.separator;
    
         // 预置包集合
         private static final Map<String, H5PresetInfo> NEBULA_LOCAL_PACKAGE_APP_IDS = new HashMap();
    
         static {
    
             H5PresetInfo h5PresetInfo2 = new H5PresetInfo();
             // 内置目录的文件名称
             h5PresetInfo2.appId = TINY_COMMON_APP;
             h5PresetInfo2.version = "1.0.0.0";
             h5PresetInfo2.downloadUrl = "";
    
             NEBULA_LOCAL_PACKAGE_APP_IDS.put(TINY_COMMON_APP, h5PresetInfo2);
    
         }
    
         @Override
         public Set<String> getCommonResourceAppList() {
             Set<String> appIdList = new HashSet<String>();
             appIdList.add(getTinyCommonApp());
             return appIdList;
         }
    
         @Override
         public H5PresetPkg getH5PresetPkg() {
             H5PresetPkg h5PresetPkg = new H5PresetPkg();
             h5PresetPkg.setPreSetInfo(NEBULA_LOCAL_PACKAGE_APP_IDS);
             h5PresetPkg.setPresetPath(NEBULA_APPS_PRE_INSTALL);
             return h5PresetPkg;
         }
    
         /**
          * 设置可以降级的资源包 ID
          */
         @Override
         public Set<String> getEnableDegradeApp() {
             return null;
         }
    
         @Override
         public String getTinyCommonApp() {
             return TINY_COMMON_APP;
         }
    
         @Override
         public InputStream getPresetAppInfo() {
             return null;
         }
    
         @Override
         public InputStream getPresetAppInfoObject() {
             return null;
         }
     }
  2. 根据客户端集成的版本下载相应的小程序基础库,将基础库复制到上一步中指定的 asset 目录下并重新命名。基于上一步的代码示例,小程序基础库路径为assets/nebulaPreset/66666692

  3. 在启动时设置该 Provider 实例。代码示例如下:

     H5Utils.setProvider(H5AppCenterPresetProvider.class.getName(), new H5AppCenterPresetProviderImpl());
    说明

    • 如果客户端中有使用 H5 公共资源包,请将公共资源包相关代码合并至该 H5AppCenterPresetProvider 的实例类中。

    • 如有更多问题,参见 代码示例