如何解决即使我使用安装后脚本,依赖于 CocoaPod 的应用程序作为 xcframework 分发,它自己的依赖项在启动时崩溃并出现 dyld 错误
我正在开发一个框架,该框架将通过 CocoaPods 作为 .xcframework 分发。该框架依赖于一些第三方库并使用 CocoaPods 来解决这些依赖关系。为了在我的框架中支持模块稳定性功能,我在框架项目的构建设置中将 BUILD_LIBRARY_FOR_DISTRUBUTION 选项设置为 YES。
我知道,如果我的模块稳定框架使用了一些依赖项,我应该为框架使用的每个依赖项设置 BUILD_LIBRARY_FOR_DISTRUBUTION=YES 设置。我通过在集成了框架的应用程序中向 Podfile 添加安装后脚本来实现这一点。这个脚本看起来像这样:
post_install do |installer|
installer.pods_project.build_configurations.each do |config|
config.build_settings["BUILD_LIBRARY_FOR_DISTRIBUTION"] = "YES"
end
end
如果我打开一些通过 Xcode 中的 CocoaPods 将我的 .xcframework 与用于框架构建的相同版本(在我的情况下为 Xcode 12.5)集成的项目,则在构建和运行时一切都会正常。但是,如果我尝试使用其他版本在 Xcode 中构建和运行此项目(我使用 Xcode 12.4 对其进行了测试),则启动的应用程序将在启动时崩溃,并显示“dyld: Symbol not found...”错误。
即使我的框架有一些依赖,如何为我的框架实现真正的模块稳定性?并且,如果可能的话,如何避免强迫我们的客户将安装后脚本添加到他们的 podfile 中?
解决方法
我最终对第三方库使用了静态链接。如果你使用 CocoaPods,只需写:
use_frameworks! :linkage => :static
然后,在 swift 文件中,您需要通过以下方式避免导出第三方符号:
@_implementationOnly import Alamofire
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。