IBM MobileFirst Platform Foundation (MFP) 和 Bluemix IMFCore SDK 中的重复符号

Posted

技术标签:

【中文标题】IBM MobileFirst Platform Foundation (MFP) 和 Bluemix IMFCore SDK 中的重复符号【英文标题】:Duplicate symbols in IBM MobileFirst Platform Foundation (MFP) and Bluemix IMFCore SDK's 【发布时间】:2016-03-08 08:50:46 【问题描述】:

尝试在 MyUnicity ios 项目中同时使用 mobilefirst 平台 SDK 和 IBM Bluemix 通知 SDK 时,我们遇到了一些问题。 MFP 和 IMFCore 库之间存在许多重复符号,并且我们的项目构建在链接阶段失败(请参见下面的示例:我们总共得到“121 个重复符号用于架构 arm64”)。 iOS 上的 Bluemix Push 通知需要 IMFCore 和 IMFPush 功能:

重复的符号 _OBJC_IVAR_$_WLAFQueryStringPair._field 在:... 重复符号 _WLAFQueryStringPairsFromDictionary 在:... 重复符号 _OBJC_CLASS_$_WLDeviceAuthManager 在:... ... ld:架构 arm64 的 121 个重复符号 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

我们已经看到移动优先平台 SDK 和 IBM 本地化 SDK 发生了类似的情况(参见:https://developer.ibm.com/answers/questions/176115/ibmlocation-ios-sdk-worklight-api-duplicate-symbol.html)。在这种情况下,答案是使用来自移动优先平台的推送通知,但在我们的例子中这是不可能的,因为推送通知服务由位于移动优先平台之外的 MACM 使用。

有一些一般性的建议可以解决这个问题,但这些解决方案看起来更像是 hack,或者涉及的步骤可能难以在其他开发环境中复制:

1) 手动从静态库中删除符号

2) 使用命名空间依赖项(涉及访问相关库)

3) 其他链接选项的使用

还有一个替代解决方案:在 MACM 中使用 xtify 推送通知而不是 bluemix 推送通知(MACM 支持 Bluemix Push 或 Xtify 作为推送通知解决方案)。

这里最好的做法是什么?

谢谢

【问题讨论】:

我们的团队仍在调查此问题,并计划在下周的某个时间为您解决 很好,期待您的回音 【参考方案1】:

我认为最好的选择是最适合您的项目需求、时间框架和实现它的技术复杂性的选项。

【讨论】:

我们希望继续使用 Bluemix 的 IBM Push Notifications 服务,因为 MACM 与它本机集成。由于使用 MFP,我们如何解决重复符号错误? @ChristianChateauvieux 我正在从 Bluemix 移动服务方面进一步研究这个问题。当我有更多信息时,我会通知你。【参考方案2】:

开发团队一直在为 Bluemix 移动服务开发一个 Swift SDK,它应该允许集成到 MFPF 而不会出现重复符号错误。

SDK 和示例仍在开发中,但您可以开始试验我们目前正在开发的使用新的 Swift SDK 的 Bluemix 推送通知示例。请查看bms-samples-swift-hellopush 存储库的开发分支。

我能够将 MFPF SDK 集成到此示例中,而不会出现您引用的重复符号错误。请注意,SDK 处于预发布阶段,因此仍处于试验阶段。当 SDK 发布时,我会及时通知您。

【讨论】:

以上是关于IBM MobileFirst Platform Foundation (MFP) 和 Bluemix IMFCore SDK 中的重复符号的主要内容,如果未能解决你的问题,请参考以下文章

IBM MobileFirst Platform Operations Console:找不到运行时

Apache Cordova 和 IBM MobileFirst Platform 有啥区别

使用 Ionic 开发 IBM MobileFirst Platform 混合应用程序

在 IBM MobileFirst Platform 上获取位置时出错

如何在 IBM MobileFirst Platform Operations Console 中处理版本禁用

在 IBM MobileFirst Platform Android 中绕过自签名证书