移動開發平臺 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、推送端口的配置。

 

 

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