Shiply 应用内升级常见使用问题
1. 集成SDK后编译提示MMKV冲突
错误提示如下:
Duplicate class com.tencent.mmkv.BuildConfig found in modules jetified-mmkv-1.0.22-runtime
这是因为宿主APP已经集成过MMKV,解决方案是排除掉灰度SDK所依赖的MMKV,例如:
implementation('com.tencent.shiply:upgrade:2.0.0-RC01', {exclude group: 'com.tencent', module: 'mmkv'})
灰度升级SDK初始化时,默认会调用MMKV.initialize;如果宿主APP在初始化灰度升级SDK前已经调用过MMKV.initialize,为了避免重复执行可以通过设置UpgradeConfig.Builder#internalInitMMKVForRDelivery(false)来屏蔽灰度升级SDK内部的MMKV.initialize调用。
2. 调用checkUpgrade接口没有触发升级弹框
业务方可以按照以下步骤对该问题进行排查:
检查前端配置的升级策略是否已经在体验中或者灰度中/全量中
如果升级策略处于体验中,需要确保体验名单中包含了业务方初始化SDK时传入的userid
检查前端配置的升级包versionCode是否大于手机本地安装包的versionCode
如果versionCode相等,需要检查前端配置的升级包versionName是否大于本地versionName检查前端配置的升级包位数是否与手机位数一致;
64位手机只能拉取到64位安装包,32位手机只能拉取到32位安装包;
如果业务方希望64位手机也能拉取到32位安装包,可以在初始化SDK时设置builder.allow32BitApkOn64BitDevice(true);
如果以上三项检查都是正常仍旧拉取不到任务,可以通过Shiply首页「咨询与反馈」入口加入内侧QQ群或者内测微信群,联系研发人员排查具体原因;
联系研发人员时请提供前端升级策略链接和客户端日志(需要在初始化SDK时设置builder.printInternalLog(true))。
3. 使用物联网sim卡拉取升级任务时提示SocketTimeoutException
三大运营商物联网卡人联网限制访问清单包括.qq.com,而shiply默认请求域名是.qq.com结尾,所以会请求失败。
解决方案是将灰度是升级SDK更新到2.0.0或以上版本,然后在初始化sdk时设置shiply物联网域名:
UpgradeConfig.Builder builder = new UpgradeConfig.Builder();
builder.customServerUrl("https://shiply.iot-tencent.com/");