600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 移动开发平台 mPaaS 专题(总结使用该平台过程遇到的问题和解决办法)

移动开发平台 mPaaS 专题(总结使用该平台过程遇到的问题和解决办法)

时间:2023-03-22 07:40:25

相关推荐

移动开发平台 mPaaS 专题(总结使用该平台过程遇到的问题和解决办法)

接触 mPaaS 开发平台到现在一个月了,小小吐槽一下官方文档对于新手来说不够友善,有些地方的讲述不够详细,不足以让一个完全的新手可以很快地上手。

下面是一些使用过程的总结。

1、mPaaS 工程跟以前开发的工程最大的区别就是,它把每一个独立的业务都划分成独立的 Bundle 工程,对于大工程的并行开发来说是很不错的,最后再通过 Portal 工程把所有的 bundle 工程打包成 .apk 文件。另外 mPaas 提供了很多常用的开发组件,如热修复、推送、分享等等,也就不用再因为某一些需求去集成很多第三方的框架了。(想起了自己之前做推送功能,集成很多第三方厂家的推送还各种冲突,流泪)。

2、关于“基线升级”。

接手的项目是基于 mPaaS 框架 10.1.20 基线,mPaaS 框架目前已经更新到 10.1.68 beta,作为 APP 开发,我们当然会选择上一个更为稳定的版本,而最近正好也是做了基线升级的需求,要把项目升级到 10.1.60 基线。关于基线升级我觉得官方文档描述的过于简单了些,因为其实整个从旧的基线版本升级的过程会存在比较多的问题,除了一些 API 的更新,还会有其他一些文档中没有提及到的冲突,下面记录一下自己升级基线的过程和解决问题的方法。

总结基线升级的步骤

从 Android Studio 的 mPaaS 插件进行基线升级(这里对 mPaaS 的插件版本有要求,具体要看官方文档)升级之后在 bundle 工程的根目录会生成一个mpaas_packages.json 文件,这里面是一些 mPaaS 的配置信息,包括组件的依赖(之前旧的 bundle 工程中会有一个主 module 和若干个子 module,每个 module 都在 build.gradle 中添加了各自需要的依赖,看的小新我头昏眼花)。接下来就是选择自己需要的组件,只需要通过插件选择即可,mPaaS 会帮我们把依赖添加到mpaas_packages.json 文件中。(这里不建议把旧的依赖先注释掉,因为待会处理冲突还会需要查看到旧的 API ,方便和新的 API 进行对比修改自己的代码)每个 bundle 工程根目录 build.gradle 中添加依赖 (同样这里的版本也要根据基线版本有个匹配,参考官方文档)

classpath 'com.android.boost.easyconfig:easyconfig:2.3.0'

每个 bundle 工程的 module 中,如果该 module 有引用 mPaaS 组件的,一定要引用如下配置

apply plugin: 'com.alipay.apollo.baseline.update'

修改完同步之后进行编译(注意此时旧的 API 包和新的 API 包是同时存在的,我上面提到不要一次性把旧依赖包删除或注释,因为编译后一定会有 API 改变所引发的报错,留着旧的包可以查看到源码,方便自己根据旧的源码对现有代码进行修改,毕竟前人不写注释,官网不做说明,压根不知道现有代码到底是在实现什么,大家还是一定要好好写注释,给后人留点生存下去的希望)我记录几点自己遇到的:推送组件中

//AliPushInterface.initPush(context, ""); 替换成下面这个AliPushInterface.init(context, "");

日志组件中

// MPLogger logger = MPLogger.getInstance(); 被废弃了MPLogger 中全部换成了静态的方法,比如:// logger.setReportAliveInterval(60 * 1000); 替换成了MPLogger.setReportClientLaunchInterval(60 * 1000);

扫一扫组件中

MaScanCallback() 接口回调的方法参数变了原本的:maCallback = new MaScanCallback() {@Overridepublic void onResultMa(MaScanResult maScanResult) {}};}现在的:maCallback = new MaScanCallback() {@Overridepublic void onResultMa(MultiMaScanResult multiMaScanResult) {}};所以旧代码中如果有用到 MaScanResult 对象的,需要通过 multiMaScanResult.maScanResults[0] 来获取

最后要注意的就是 Portal 工程,Portal 工程的主 module ,build.gradle 中,需要添加如下配置

「主 module 中 build.gradle 的 mPaas 主线依赖一定要注释掉,新、旧依赖的冲突很可能会导致软件运行过程闪退,另外就是 下面这些依赖不可以注释

mpassbase : 'com.mpaas.android.res.base:mpaas-baseresjar:1.0.0.180403225715@jar',v7 : 'com.mpaas.android.res.base:mpaas-baseresjar:1.0.0.180403225715:appcompat@jar',recyclerview : 'com.mpaas.android.res.base:mpaas-baseresjar:1.0.0.180403225715:recyclerview@jar',design : 'com.mpaas.android.res.base:mpaas-baseresjar:1.0.0.180403225715:design@jar',

apply plugin: 'com.alipay.portal'portal {allSlinks truemergeAssets true}apply plugin: 'com.alipay.apollo.baseline.update'mpaascomponents{excludeDependencies=[]}

6、H5 容器的配置。

7、推送端口的配置。

查看移动推送及同步端口是否为443,如非443端口,区分引用配置方式设置: A.如果项目通过config的形式引用配置文件,需在配置文件的推送和同步端口前添加:【\\空格】 B.如果未使用config引用配置文件,直接在AndroidManifest中引用的,需要在AndroidManifest中的推送及同步端口前添加【\空格】 以上只需添加【】中内容,【】无需添加。

关于 APP 更新下载安装时无法唤起安装页面

mPaaS 官方提供了更新组件,方便我们对 APP 进行升级。

问题:

测试发现在项目 A 里按照官方文档配置完后无法唤起安装页面(安装包正常下载),同样的配置在项目 B 中没有出现这样的问题。

下面先贴上官方配置:

快速开始 - 移动开发平台 mPaaS - 阿里云

解决方案:

在 file_path 文件中加入 root-path 的配置。(这一点在官方文档中没有提到,这个方法只是解决当前这个项目出现这种特殊情况)

关于 APP 更新下载时,通知栏没有出现下载进度条

问题:

测试发现在 vivo的手机上下载安装包时通知栏没有出现下载进度条

原因:

vivo 手机默认不开启应用的通知栏权限

解决方案:

下载安装包时跳转到应用通知栏权限页面,提示用户打开通知栏权限。

关于报错 Plugin with id ‘com.alipay.portal’ not found

问题:

突然之间 portal 编译就报这个错,没有修改任何东西

报错指向了 build.gralde 里的这一行,如图

原因:

不明,咨询了蚂蚁的技术支持也没搞明白

解决方案:

更新根目录下 build.gradle 中与 mpaaS 的相关配置(更新了几个配置的版本号),如图:

如何排查 H5 页面是走的本地还是线上:

打开离线包时,Logcat 过滤关键字load response,就可以看出是走的线上还是本地页面。

本地:

出现from ····· package的,证明离线包已经成功下载到本地并成功解压,当前打开的就是内置到本地的页面。

线上:

出现from ···· url的,就是走的线上,要么离线包还没下载到本地,要么下载完了解压失败导致无法打开本地的页面。

查看离线包是否需要验签,且验签是否成功:

Logcat 过滤关键字 “verify”,如果当前配置离线包需要验签,则会出现h5_shouldverifyapp YES,图片可以看到我的项目里配置的是不需要验签

如果是需要验签且可以成功解压的,则会出现verify result true日志。

目前验签的开关是通过客户端内置文件和 mpaas 控制台两个地方控制的,有时候自己配置的忘记的,导致两者不一致,就会出现一些问题。这个方法在排查 h5 页面一直走 fallback ,导致加载页面速度很慢时,可以很快帮助我们定位到问题。

附上官网相关链接:

如何排查离线包验签失败的问题 - 移动开发平台 mPaaS - 阿里云

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。