我正在尝试构建使用Unity开发的iOS应用程序。该应用程序可作为apk或aab在Android上正常构建和运行。为iOS构建时,在Unity中没有任何错误,并且构建了Unity-iPhone.xcodeproj和Unity-iPhone.xcworkspace。我打开Unity-iPhone.xcworkspace并确保该应用程序的签名正确无误。但是,当尝试归档项目时,出现以下错误:
(这些错误在构建UnityFramework时出现并与之相关)
ld: warning: Could not find or use auto-linked library 'swiftCoreMIDI'
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1
Undefined symbol: _swiftoverride_class_getSuperclass(swift::TargetMetadata<swift::InProcess> const*)
Undefined symbol: swift::swift51override_conformsToSwiftProtocol(swift::TargetMetadata<swift::InProcess> const*, swift::TargetProtocolDescriptor<swift::InProcess> const*, llvm::StringRef, swift::TargetProtocolConformanceDescriptor<swift::InProcess> const* (*)(swift::TargetMetadata<swift::InProcess> const*, swift::TargetProtocolDescriptor<swift::InProcess> const*, llvm::StringRef))
附加信息:
我尝试过的事情:
这些尝试均未删除或更改错误。
据我了解,问题在于UnityFramework中的一个库正在尝试调用“ swiftCoreMIDI ”库中的某些函数,但无法访问它们。但是我无法弄清楚为什么将库添加到常规面板中的Frameworks and Libraries列表和/或UnityFramework的构建阶段中的Link Binary With Libraries列表并不能解决问题。
预先感谢您的任何想法或建议。
我终于找到了解决方案,该解决方案已链接到Xcode中的UnityFramework目标。我必须删除一些与构建无关的体系结构:i386和x86_64。另外,我更新了库搜索路径以包括$(SDKROOT)/ usr / lib / swift。
要自动执行这些操作,可以在Unity项目的PostProcessBuild文件中添加这些行:
var projPath = pathToBuiltProject + "/Unity-iPhone.xcodeproj/project.pbxproj";
var proj = new PBXProject();
proj.ReadFromFile(projPath);
// Update the Library Search Paths of the whole Xcode project
proj.AddBuildProperty(proj.ProjectGuid(), "LIBRARY_SEARCH_PATHS", "$(SDKROOT)/usr/lib/swift");
// Get the UnityFramework target and exclude the unwanted architectures
var unityFrameworkGuid = proj.TargetGuidByName("UnityFramework");
proj.SetBuildProperty(unityFrameworkGuid, "EXCLUDED_ARCHS", "i386");
proj.AddBuildProperty(unityFrameworkGuid, "EXCLUDED_ARCHS", "x86_64");
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句