接入 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
命令引入原生的版本。