iOS自定义Framework加open修饰符后Eureka模块未找到错误求助
问题原因及解决方法
问题原因
当用open修饰类时,该类会成为Framework的公开API。Xcode在构建Framework的公开接口时,要求所有被公开类直接引用的外部模块(如Eureka)必须被标记为Framework的公开依赖。如果Eureka仅作为私有依赖被链接(CocoaPods默认安装时的状态),Xcode会因为外部项目无法访问到Eureka模块,而抛出module 'Eureka' not found的错误。
而不加open时,类属于内部访问级别,Xcode仅在Framework内部构建时检查依赖,不需要对外暴露Eureka,因此不会触发这个错误。
解决方法
方法1:通过CocoaPods配置公开依赖(推荐)
- 确认你的Podfile已开启
use_frameworks!,并为Framework target正确引入Eureka:
use_frameworks! target '你的Framework名称' do pod 'Eureka' end
- 执行
pod install,打开生成的.xcworkspace文件(必须用workspace而非单独的xcodeproj)。 - 在Xcode中选中你的Framework target,进入Build Phases -> Link Binary With Libraries:
- 找到
Eureka.framework,点击其右侧的权限下拉菜单,将Status改为Public。
- 找到
- 执行
Cmd+Shift+K清理项目,再重新构建即可。
方法2:手动调整依赖状态(非CocoaPods场景)
- 将Eureka.framework添加到你的Framework项目的Linked Frameworks and Libraries中。
- 在该列表中,将Eureka.framework的Status设置为
Public。 - 确保Eureka.framework被添加到Embedded Binaries(若为动态框架),并验证Framework Search Paths包含Eureka的路径。
内容的提问来源于stack exchange,提问作者Hien Ho
相关产品推荐
相关产品推荐

