美文网首页
_swiftoverride_class_getSupercla

_swiftoverride_class_getSupercla

作者: Jens丶 | 来源:发表于2022-03-21 21:24 被阅读0次
Unity摊
 Undefined symbols for architecture armv7:
   "_swiftoverride_class_getSuperclass(swift::TargetMetadata<swift::InProcess> const*)", referenced from:
       swift::swift50override_conformsToProtocol(swift::TargetMetadata<swift::InProcess> const*, 
swift::TargetProtocolDescriptor<swift::InProcess> const*, swift::TargetWitnessTable<swift::InProcess> 
const* (*)(swift::TargetMetadata<swift::InProcess> const*, 
swift::TargetProtocolDescriptor<swift::InProcess> 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_getSupercla

      本文链接:https://www.haomeiwen.com/subject/hymtjrtx.html