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