【发布时间】:2015-07-03 12:18:55
【问题描述】:
以前,我能够毫无问题地构建和运行我的 Unity 输出 Xcode 项目。但是现在 Apple 需要对 iOS 应用程序提供 64 位支持,我不得不在 Unity 中进行以下更改:
Build settings -> Player settings -> Other settings -> Scripting backend -> IL2CPP
Build settings -> Player settings -> Other settings -> Architecture -> Universal
现在的问题是我无法在我的设备上成功构建和运行我的 Xcode 项目。我收到了这个Apple Mach-O linker error,这是我以前没有收到的。
这是我从 Xcode 得到的错误:
ld: warning: directory not found for option '-F-F/Users/user/Desktop/qwer/Frameworks/Plugins/IOS'
ld: warning: directory not found for option '-F"/Users/user/Desktop/qwer/../../Documents/Unity Projects/Unity 5.0.0 projects/MyGame/Assets/Editor/Vungle/VungleSDK"'
duplicate symbol l082 in:
/Users/user/Documents/Unity Projects/Unity 5.0.0 projects/MyGame/Assets/Editor/Vungle/VungleSDK/VungleSDK.framework/VungleSDK(FMDatabase.o)
/Users/user/Documents/Unity Projects/Unity 5.0.0 projects/MyGame/Assets/Editor/Vungle/VungleSDK/VungleSDK.framework/VungleSDK(VungleAdViewController.o)
duplicate symbol l084 in:
/Users/user/Documents/Unity Projects/Unity 5.0.0 projects/MyGame/Assets/Editor/Vungle/VungleSDK/VungleSDK.framework/VungleSDK(VungleVideoPlayer.o)
/Users/user/Documents/Unity Projects/Unity 5.0.0 projects/MyGame/Assets/Editor/Vungle/VungleSDK/VungleSDK.framework/VungleSDK(VungleAdViewController.o)
ld: 2 duplicate symbols for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
据我观察,似乎与VungleSDK 位置有关?这对我来说很奇怪,因为除了上面提到的之外,我没有做任何更改。
有人知道如何解决这个问题吗?
另外附注:是否有人在切换到 IL2CPP 和 Universal 架构时遇到编译时间缓慢的问题?我已经将我的 Xcode 版本切换到 Release(正如有人在网上建议的那样),它仍然是这样。我的代码编译需要很长时间。在我切换到 IL2CPP 和 Universal 之前只花了不到 10 秒的时间
更新:我需要提到我在我的应用程序中使用了Chartboost、AdColony 和Vungle。我做了一些实验,发现从我的 Xcode 项目中删除 -ObjC 和 -fobjc-arc 链接器标志修复了 Mach-O 链接器错误,并且我能够再次成功构建和运行。我得到的warning: directory not found for option 仍然存在,但它仍然编译并成功运行,Chartboost 和Vungle 的所有功能都在我的应用程序中完全运行。
我一开始就有这些链接器标志,因为AdColony SDK 需要它们。但是删除它们会使 AdColony 停止在我的应用程序中运行。所以这也不是一个干净的解决方案。
这让我相信两件事:AdColony unity 插件可能在支持 Universal/ARM64 架构方面存在问题,或者 -ObjC 链接器标志与构建到 Universal/ARM64 架构不兼容。
如果有人能阐明这个令人困惑的问题,我将不胜感激。
谢谢
【问题讨论】:
-
似乎有些符号在 vungle sdk 中重复。确保您使用的是支持 64 位的 sdk,这看起来就像您一样,并尝试清理项目,然后进行新构建
-
@hades2510 感谢您的评论。我对项目进行了清理并再次编译,但我收到了同样的错误。虽然我不完全确定最新的 VungleSDK 是否支持 64 位。但是没有
ignoringcmets 的错误,我认为它确实支持64。 -
如何修复重复的符号?
-
您是否尝试将 Unity 更新到最新版本?根据您的口味,它应该是 5.1.1 或 4.6.7
-
是的,我尝试更新到最新版本。结果还是一样。