我决定在我的应用程序中使用SwiftUI实现一些视图。该应用程序向后兼容iOS 12。
一切正常,直到我在iOS 12设备上运行它。该应用程序立即崩溃,并且收到警告,提示我无法加载SwiftUI。
dyld: Library not loaded: /System/Library/Frameworks/SwiftUI.framework/SwiftUI Referenced from: /var/containers/Bundle/Application/MyApp.app/MyApp Reason: image not found
我在所有正确的位置使用@available(iOS 13.0,*),没有编译器警告,并且该应用程序可以在iOS 13上完美运行
我如何才能在iOS 12上使用它?
原来这是一个已知问题,苹果引入了一个新的构建设置标志来处理它
在Swift软件包中包含SwiftUI的应用程序可能无法在iOS 13之前的iOS版本上运行。(53706729)
解决方法:
当向后部署到不包含SwiftUI框架的操作系统时,请将-weak_framework SwiftUI标志添加到Build Settings选项卡中的Other Linker Flags设置中。有关弱链接框架的更多信息,请参见框架和弱链接。使用导入SwiftUI的动态链接Swift包时,此解决方法不适用。
添加 -weak_framework SwiftUI
到Other Linker Flags
修复我的问题