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

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

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

2、关于“基线升级”。

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

总结基线升级的步骤

  1. 从 Android Studio 的 mPaaS 插件进行基线升级(这里对 mPaaS 的插件版本有要求,具体要看官方文档)
  2. 升级之后在 bundle 工程的根目录会生成一个 mpaas_packages.json 文件,这里面是一些 mPaaS 的配置信息,包括组件的依赖(之前旧的 bundle 工程中会有一个主 module 和若干个子 module,每个 module 都在 build.gradle 中添加了各自需要的依赖,看的小新我头昏眼花)。接下来就是选择自己需要的组件,只需要通过插件选择即可,mPaaS 会帮我们把依赖添加到 mpaas_packages.json 文件中。(这里不建议把旧的依赖先注释掉,因为待会处理冲突还会需要查看到旧的 API ,方便和新的 API 进行对比修改自己的代码)
  3. 每个 bundle 工程根目录 build.gradle 中添加依赖 (同样这里的版本也要根据基线版本有个匹配,参考官方文档)
    classpath 'com.android.boost.easyconfig:easyconfig:2.3.0' 
  4. 每个 bundle 工程的 module 中,如果该 module 有引用 mPaaS 组件的,一定要引用如下配置
    apply plugin: 'com.alipay.apollo.baseline.update'
  5. 修改完同步之后进行编译(注意此时旧的 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 - 阿里云

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

  1. ARCGIS开发中类型XXX在未被引用的程序集中定义的解决办法

    ARCGIS开发中类型XXX在未被引用的程序集中定义的解决办法 分类: ArcGIS ARCGIS开发中出现了这样的错误:类型"ESRI.ArcGIS.DataSourcesRaster.I ...

  2. Mybatis注解开发出现Type interface Mapper.StudentMapper is not known to the MapperRegistry异常解决办法

    Mybatis注解开发出现Type interface Mapper.StudentMapper is not known to the MapperRegistry异常解决办法 在核心配置文件中,配 ...

  3. iOS开发小记:初次接入环信SDK3.0时遇到的问题及解决办法汇总

    因在开发公司项目有即时通讯模块,经商量之后选择了第三方即时通讯sdk环信,由于3.0文档还不是非常全面,且本人之前没有过开发即时通讯的经验,查阅了很多资料,磕磕绊绊几天终于完成了对该模块的开发,故此记 ...

  4. Java Web开发中,自定义过滤器被执行两次的原因分析及解决办法

    本文出处:http://blog.csdn.net/chaijunkun/article/details/7646338,转载请注明.由于本人不定期会整理相关博文,会对相应内容作出完善.因此强烈建议在 ...

  5. EasyCVR平台H.265视频播放加载致服务异常的偶发现象解决办法

    EasyCVR视频融合云平台视频能力丰富.兼容性强.开放度高,它能对多种终端(PC电脑.手机.平板.电子大屏等)分发出RTSP.RTMP.FLV.HLS.WebRTC等格式的视频流,在视频接入上也能支 ...

  6. 黑金开发板在NiosII环境下烧写image到flash失败的解决办法

    网上看到很多朋友和我遇到一样的问题,貌似都没有解决,所以在此记录下. 背景:1.利用QuartusII与NiosII EDS软件进行软硬件开发: 2.硬件:黑金开发板AX301, 3.软件:led流水 ...

  7. 国标GB28181协议视频平台EasyGBS大并发下SIP消息出现重复SN号的解决办法

    随着国家倡导平安城市.智慧城市的建设,安防视频监控作为智慧城市安防建设的重要环节,也越来越受到重视.EasyGBS是基于公安部推出的安防主流协议(国标GB28181协议)的视频接入.处理及分发平台,具 ...

  8. adb 安卓模拟器 进程端口_Android开发中遇到的问题(一)——Android模拟器端口被占用问题的解决办法...

    一.问题描述 今天在Eclipse中运行Android项目时遇到"The connection to adb is down, and a severe error has occured& ...

  9. 互联网直播点播平台EasyDSS v3.2.4内核无法启动的原因分析及解决办法

    EasyDSS视频直播点播平台集视频直播.点播.转码.管理.录像.检索.时移回看等功能于一体,可提供音视频采集.视频推拉流.播放H.265编码视频.存储.分发等视频能力服务,在应用场景上,平台可以运用 ...

最新文章

  1. EBS查询当前LOV SQL
  2. “rm -rf”相当于Windows?
  3. JQUERY的appendappendTo
  4. java.io.IOException: No FileSystem for scheme: hdfs转载加自己笔记
  5. 手机APP和WAP版的区别
  6. 阿里研究院入选中国企业智库系统影响力榜 1
  7. JavaScript内置对象之Array对象总结(附实例)
  8. 【Linux中基于docker安装oracle及Oracle密码过期修改】
  9. MATLAB语音信号处理系统GUI
  10. VLC ass字幕文件格式
  11. 红帽linux安装中文输入法,Redhat安装中文输入法
  12. 华为云ECS服务器上安装docker
  13. Dell Optiplex 960 n series 释放SLIC
  14. 人才补贴,正式取消?
  15. 典型Π型RC滤波电路
  16. 朴素贝叶斯法及python实现
  17. string++php,String 字符串
  18. STM32驱动硬件MG90S舵机
  19. 借助新电商平台,湖北荷塘三宝直达全国餐桌
  20. 搭载鸿蒙系统的华为电脑,华为MatePad Pro配置曝光,搭载骁龙870芯片,还有鸿蒙系统加持...

热门文章

  1. 【Python问题】Python 导入模块的三种方式ModuleNotFoundError: No module named ‘模块名‘
  2. [SSD科普之2] SATA、mSATA、M.2、M.2(NVMe)、PCIE固态硬盘接口详解
  3. MySQL 自增序列
  4. IF:11+ 研究CpG岛甲基化表型病因和致癌转化的泛癌综合分析
  5. spinnaker 持续部署
  6. Flutter学习之布局、交互、动画
  7. 小米逆行,乐视顺势,互联网电视结局已定
  8. python 冒泡算法
  9. ffmpeg rtmp音视频推流实现
  10. mysql密码加强_MySQL 密码加强插件_mysql