_swiftoverride_class_getSuperclass libswiftCompatibility50.a

Unity摊
 Undefined symbols for architecture armv7:
   "_swiftoverride_class_getSuperclass(swift::TargetMetadata const*)", referenced from:
       swift::swift50override_conformsToProtocol(swift::TargetMetadata const*, 
swift::TargetProtocolDescriptor const*, swift::TargetWitnessTable 
const* (*)(swift::TargetMetadata const*, 
swift::TargetProtocolDescriptor const*)) in 
libswiftCompatibility50.a(ProtocolConformance.cpp.o)

环境: Unity2018.4.36f1 And Xcode12+ 编译
原因: Swift、OC 混编时需要配置Xcode Project, 使用xxxxx Bridging-Header.h

解决(Xcode配置):

1. Adding a new Swift file and a Brigde header:

  1. File -> New -> File


    image.png
  2. Select Swift File


    image.png
  3. Confirm Create Bridging Header


    image.png

2.Go to Build Settings and set Always Embed Swift Standard Libraries to YES

image.png
结果

------------------------------------------------分割线------------------------------------------------

解决(Unity打包过程的话):

  1. 将任一空的.swift文件放至Assets/Plugins/iOS目录下
  2. 打包后处理增加:
    [PostProcessBuild(900)]
    public static void OnPostprocessBuild(BuildTarget target, string path)
    {
        PBXProject project = new PBXProject();
        string pbxProjectPath = PBXProject.GetPBXProjectPath(path);
        pbxProject.SetBuildProperty(targetGuid,"ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES", "YES");
     }

你可能感兴趣的:(_swiftoverride_class_getSuperclass libswiftCompatibility50.a)