You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xcode集成Unity-iPhone时因SPM与CocoaPods重复依赖导致随机崩溃的问题求助

Xcode集成Unity-iPhone时因SPM与CocoaPods重复依赖导致随机崩溃的问题求助

大家好,我最近在尝试把Unity作为库集成到我们的原生Swift应用里,用的是某视频教程提到的方法——创建一个包含原生App的工作区,再把Unity-iPhone的.xcodeproj引入进来。本来大部分场景都能正常运行,但一涉及多依赖集成就出问题了,现在还遇到了随机崩溃的情况,实在搞不定,来求助各位大佬!

具体情况

  • 我们的原生App使用**Swift Package Manager(SPM)**集成了Firebase等第三方库,随之引入了Promises、nanopb、GoogleUtilities这些依赖。
  • 负责提供AR功能的Unity-iPhone项目,据开发它的团队说明,他们在Unity打包时会通过CocoaPods生成依赖,对应的Podfile大致如下:
source 'https://cdn.cocoapods.org/'

platform :ios, '12.0'

target 'UnityFramework' do
    pod 'ARCore/GARSesion'
    pod 'ARCore/Geospatial'
end
target 'Unity-iPhone' do
end
use_frameworks! :linkage => :static

这个Pod配置同样会引入Firebase、FirebaseCore、GoogleUtilities等和原生App重复的依赖。

问题表现

现在运行App时,有50%的概率会崩溃,日志里先会出现这类重复实现的警告:

objc[8347]: Class GULURLSessionDataResponse is implemented in both /private/var/containers/Bundle/Application/298197D2-7D84-4120-84EC-9A5E1C1D8A77/MyApp.app/Frameworks/UnityFramework.framework/UnityFramework (0x117a8c258) and /private/var/containers/Bundle/Application/298197D2-7D84-4120-84EC-9A5E1C1D8A77/MyApp.app/MyApp.debug.dylib (0x10846edf8). One of the two will be used. Which one is undefined.
objc[8347]: Class FBLPromise is implemented in both /private/var/containers/Bundle/Application/298197D2-7D84-4120-84EC-9A5E1C1D8A77/MyApp.app/Frameworks/UnityFramework.framework/UnityFramework (0x117a89ce8) and /private/var/containers/Bundle/Application/298197D2-7D84-4120-84EC-9A5E1C1D8A77/MyApp.app/MyApp.debug.dylib (0x10846ee98). One of the two will be used. Which one is undefined.
objc[8347]: Class GULLoggerWrapper is implemented in both /private/var/containers/Bundle/Application/298197D2-7D84-4120-84EC-9A5E1C1D8A77/MyApp.app/Frameworks/UnityFramework.framework/UnityFramework (0x117a8c190) and /private/var/containers/Bundle/Application/298197D2-7D84-4120-84EC-9A5E1C1D8A77/MyApp.app/MyApp.debug.dylib (0x10846ef60). One of the two will be used. Which one is undefined.

当崩溃发生时,会抛出如下错误:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[FBLPromise HTTPBody]: unrecognized selector sent to instance 0x3024bc510'
*** First throw call stack:
(0x18995d08c 0x186c5f2e4 0x189a637c8 0x1898fa888 0x1898fa1b0 0x114fcd9bc 0x114fcca04 0x114f03978 0x114f0319c 0x102e0ca30 0x102e0e71c 0x102e16800 0x102e17360 0x102e245f0 0x102e23c00 0x210ca7c7c 0x210ca4488)

我的猜测与测试

我怀疑问题根源是我手动将UnityFramework.framework添加到了原生iOS项目中,导致它把所有依赖都引入进来,和原生SPM的依赖发生了冲突。

我特意从零新建了一个小项目复现这个场景:原生App用SPM集成依赖,Unity-iPhone用CocoaPods生成依赖。结果日志里同样出现了“重复实现”的警告,但这次没有崩溃,可能是因为我只调用了FirebaseApp.configure(),没有用到更多复杂的Firebase功能。

个人背景

我之前完全没接触过Unity集成,也没怎么处理过Xcode工作区中多项目的依赖问题,更不懂手动集成框架带来的依赖冲突该如何解决,真心希望各位能给我一些建议!谢谢大家!

备注:内容来源于stack exchange,提问作者Mihai Laurentiu Mocanu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 08:48:04