问题描述
Android 开发者在完成小程序接入后,尝试在应用中打开小程序时,容器页面显示错误提示“网络不给力,请稍后再试”。
常见原因
mPaaS 在打开一个小程序应用前,首先需要获知该小程序包的基本信息,因此客户端会主动通过 mPaaS 的 RPC 接口 alipay.client.getUnionResource
去拉取离线包信息。如果小程序包信息获取失败(RPC 出现异常),小程序容器就会提示错误 “网络不给力,请稍后再试”。
问题排查步骤
过滤日志。 在 Android Studio 控制台过滤日志信息中的 RPC Exception 字段。
查询异常码描述。 如 常见原因 所述,客户端需要主动拉取离线包信息,而拉取过程依赖 RPC 请求。如果 RPC 链路存在问题,则无法正常获取离线包信息,导致加载失败。要确认 RPC 请求是否存在问题,需要在 Android Studio 控制台中搜索
alipay.client.getUnionResource
观察 RPC 请求是否正常返回。如果存在错误,一般的错误代码包括 7XXX 系列等,例如:错误码
说明
示例
7000
没有设置公钥
移动 App 的无线保镖中无 appId 对应的密钥。
7001
验签的参数不够
网关服务端验证签名不通过。
7002
验签失败
网关服务端验证签名不通过。
7003
验签-时效性失败
API 请求入参 ts 时间戳超过系统设置的时间有效性限制。
7007
验签-缺少 ts 参数
API 请求缺少验签 ts 参数。
7014
验签-缺少 sign 参数
API 请求缺少验签 sign 参数。
根据不同异常,解决RPC异常。
7000-7002 代表图片生成有问题,请按照接入 Android 步骤重新生成图片,若是专有云环境,需要联系专门的服务人员进行进一步排查。
7003、7007 代表验签时效问题,可能是手机时间设置与网关服务时间相差超过 30 分钟导致,需检查手机时间。
7014 代表上传 mPaas 控制台的 APK 签名和应用打包签名信息不一致。排查方法如下:
检查上传 mPaas 控制台的 APK 包签名 debug 环境是否已配置。 在 App 的 gradle 打包配置信息中添加 debug 和 release 信息。正常手机运行在打 debug 包环境下,所以要配置 debug 信息。
signingConfigs{ debug{ keyAlias 'key0' keyPassword '123456' storeFile file('D:/project/signFile/xx.jks') storePassword '123456' } release{ keyAlias 'key0' keyPassword '123456' storeFile file('D:project/signFile/xxx.jks') storePassword '123456' } }
检查 mPaas 控制台 Android 配置信息中 Package Name 信息和上传 APK 文件是否和 App 工程一致。
工单协助
如果依然不能解决问题,请准备好相关问题的复现 Demo 工程,搜索群号 41708565 加入钉钉群进行咨询。