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

接触 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() {
                    @Override
                    public void onResultMa(MaScanResult maScanResult) {
                        
                    }
    
                };
            }
    现在的:
    maCallback = new MaScanCallback() {
                    @Override
                    public 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 true
        mergeAssets true
    }
    
    apply plugin: 'com.alipay.apollo.baseline.update'
    
    mpaascomponents{
        excludeDependencies=[]
    }

6、H5 容器的配置。

7、推送端口的配置。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章