接入 mPaaS 時,mPaaS SDK 可能會和工程中引入的其他開源庫或三方庫發生沖突,導致工程編譯不通過。本文介紹了兩類常見沖突的解決方案。
根據引起沖突的庫的類型,可以將解決方案分為以下兩類:
mPaaS 定制庫:若發生沖突的 mPaaS SDK 為定制庫,則必須使用這些 mPaaS 庫。
非 mPaaS 定制庫:若發生沖突的 mPaaS SDK 非 mPaaS 定制庫,可以將 mPaaS 引入的庫進行刪除。
mPaaS 定制庫沖突解決方案
若發生沖突的 mPaaS SDK 為定制庫,則必須使用這些 mPaaS 庫。
開源庫名 | mPaaS 庫名 | 沖突解決方案 |
AlipaySDK | AlipaySDK | 必須使用 mPaaS 版本(解決了與 mPaaS RPC、UTDID 等模塊的沖突)同時需要集成 mPaaS_RPC 組件。 |
OpenSSL | APOpenSSL | 必須使用 mPaaS 版本(對原有國密算法進行優化)。更多詳細信息,請參見 如何解決 iOS 工程中的 OpenSSL 三方庫沖突 。 |
protocolBuffers | APProtocolBuffers | 必須使用 mPaaS 版本。 |
非 mPaaS 定制庫沖突解決方案
若發生沖突的 mPaaS SDK 非 mPaaS 定制庫,可以將 mPaaS 引入的庫進行刪除,支持刪除的庫如下表所示。詳情請參見 移除沖突的三方庫 移除引起沖突的庫。
remove_pod 支持的組件 | 包含的開源庫 |
mPaaS_SDWebImage | SDWebImage |
mPaaS_Masonry | Masonry |
mPaaS_MBProgressHud | MBProgressHUD |
mPaaS_TTTAttributedLabel | TTTAttributedLabel |
mPaaS_Lottie | Lottie |
mPaaS_AMap | AMapSearchKit |
AMapFoundationKit | |
MAMapKit | |
mPaaS_Security | SecurityGuardSGMain |
mPaaS_APWebP | WebP |
移除沖突的三方庫
若發生沖突的 mPaaS SDK 非 mPaaS 定制庫,可參照以下步驟刪除 mPaaS 引入的庫。
操作步驟
安裝 beta 版 cocoapods-mPaaS 插件。
說明cocoapods-mPaaS 插件 beta 版僅支持在 10.2.3 基線中使用。
sh <(curl -s http://mpaas-ios-test.oss-cn-hangzhou.aliyuncs.com/cocoapods/installmPaaSCocoaPodsPlugin.sh)
安裝完成后,使用命令
pod mpaas version --plugin
確認是否為 beta 版本。重新運行命令更新本地基線:
pod mpaas update 10.2.3
。使用
mPaaS_pod
命令之前,在podfile
里引入remove_pod "mPaaS_xxx"
。比如,在mPaaS_pod "mPaaS_CommonUI"
之前使用remove_pod "mPaaS_SDWebImage"
去除SDWebImage
。remove_pod "mPaaS_SDWebImage" mPaaS_pod "mPaaS_CommonUI" pod 'xxx' # 對應的三方原生庫
去除 mPaaS 的組件庫后,可使用
pod install
命令引入原生的版本。