以前,我能够毫无问题地构建和运行我的 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
统一插件可能在支持 Universal/ARM64 架构方面存在问题,或者-ObjC
链接器标志与构建到 Universal/ARM64 架构不兼容。
如果有人能对这个令人困惑的问题有所了解,我将不胜感激。
谢谢