我遇到了一个真实的的问题,一个应用程序在生产中不适用于iOS 15。症状:当我启动应用程序时,我会得到一秒钟的黑屏,然后应用程序就会死机。Xcode崩溃后的唯一信息如下:
构建真实的器械运行版本:
dyld[6062]: Symbol not found: (_swift_getExtendedExistentialTypeMetadata)
Referenced from: '/private/var/containers/Bundle/Application/661DFEBF-EA64-489A-9DA3-3957077A0C3A/yummypets.app/yummypets'
Expected in: '/usr/lib/swift/libswiftCore.dylib'
设置:Xcode 14.3.1 Swift 5.8.1 Swift语言版本Xcode:5最小部署:iOS 15零不兼容错误消息
我已经尝试了一些方法,包括:
- 清洁和重建
- Runpath搜索路径为$(inherited)@executable_path/Frameworks
- 嵌入内容包含Swift代码为“是
- 签名身份为开发人员
- 回滚到以前的版本
- 删除Xcode
- 检查包我设法避免了第一次崩溃添加“-Wl,-weak-lswiftCore”到其他链接标志在构建设置,但它并不理想,并导致其他问题.
1条答案
按热度按时间2admgd591#
我认为您遇到了与https://github.com/apple/swift/issues/64657相同的问题
据我所知,转换
any Blah<Something>
类型的泛型约束,Swift编译器发出一个依赖于swift_getExtendedExistentialTypeMetadata
函数的对象文件,该函数在iOS 16运行时之前不存在。我的解决方法是:
使用像https://ghidra-sre.org/这样的反汇编器来查找对符号
_swift_getExtendedExistentialTypeMetadata
的引用。你会有一个演员表(as/as?)或在可能是罪魁祸首的函数中。如果有人能用objdump来编写一个更聪明的脚本,我会很欢迎的:)