以前,我能够毫无问题地构建和运行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。您所要做的就是删除其中之一。如果您认为其中一个较旧,而另一个较新,而不是哪个较新,则将它们都删除,然后重新导入最新的Vungle SDK。
另外,我从您发布的日志中发现了另一个可能的问题
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"'
您的Vungle SDK的路径似乎包含在“框架搜索路径”中的“”(反逗号)中。检查您的路径,其外观应如下图所示。
请注意,路径
$(SRCROOT)/../../Assets/Editor/Vungle/VungleSDK
不在“”(反逗号)中。更新1
当在框架搜索路径中未正确输入路径时,会发生大多数此类问题。在我的情况下,我有多个插件,不仅要检查框架搜索路径,还要检查标题搜索路径和库搜索路径。我的“图书馆搜索路径”中也有“”,也将其删除(删除“”时要小心-一次错误的删除,您将不得不创建一个新的xcode项目)。我已附加其他“搜索路径”图片
标头搜索路径
图书馆搜索路径