首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >即使我使用安装后脚本,依赖于作为xcframework分发的CocoaPod的应用程序在启动时也会崩溃,并出现dyld错误

即使我使用安装后脚本,依赖于作为xcframework分发的CocoaPod的应用程序在启动时也会崩溃,并出现dyld错误
EN

Stack Overflow用户
提问于 2021-05-21 23:30:08
回答 1查看 234关注 0票数 0

我正在开发一个框架,它将作为.xcframework通过CocoaPods发布。该框架依赖于一些第三方库,并使用CocoaPods来解决这些依赖关系。为了在我的框架中支持模块稳定性特性,我在框架项目的构建设置中将BUILD_LIBRARY_FOR_DISTRUBUTION选项设置为YES。

我知道,如果我的模块稳定的框架使用一些依赖项,我应该为框架使用的每个依赖项设置BUILD_LIBRARY_FOR_DISTRUBUTION=YES设置。我通过在集成了框架的app的Podfile中添加安装后脚本来实现这一点。此脚本如下所示:

代码语言:javascript
复制
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与用于框架构建的相同版本(在我的示例中是Xcode12.5)集成在一起,那么构建和运行时一切都会很好。但是如果我尝试用其他版本的Xcode构建和运行这个项目(我用Xcode12.4测试过它),启动的应用程序将在启动时崩溃,并显示"dyld: Symbol not found...“错误。

如何为我的框架实现真正的模块稳定性,即使它有一些依赖?如果可能的话,如何避免强迫我们的客户将安装后脚本添加到他们的podfile中呢?

EN

回答 1

Stack Overflow用户

发布于 2021-05-22 01:11:04

我最终使用了第三方库的静态链接。如果您使用CocoaPods,只需编写:

代码语言:javascript
复制
use_frameworks! :linkage => :static

然后,在swift文件中,您需要通过以下方式避免导出第三方符号:

代码语言:javascript
复制
@_implementationOnly import Alamofire
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67639843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档