如何为iOS库项目添加框架?React Native封装遇Module未找到问题
问题分析与解决方案
为什么应用项目可行但库项目不行?
CocoaPods对可执行项目(示例应用)和库项目的依赖打包逻辑完全不同:
- 示例应用是可执行目标,CocoaPods默认会把所有依赖打包成静态库
libPods.a,并自动配置Xcode的模块搜索路径,所以@import能正常识别。 - 你的RN封装库是静态/动态库目标,CocoaPods默认会把依赖合并为
Pods.framework,但库项目的Build Settings没有自动继承Pods的模块映射配置,导致Xcode找不到MyTargetFramework的模块定义。
正确的配置步骤
修正Podfile配置
针对库项目,需要明确指定target并开启模块化相关配置,示例Podfile如下:platform :ios, '13.0' # 匹配你的最低iOS版本 target 'YourRNLibraryName' do use_modular_headers! # 如果MyTargetFramework是静态框架,用这个;如果是动态框架,用use_frameworks! pod 'MyTargetFramework' end target 'YourExampleApp' do use_modular_headers! pod 'YourRNLibraryName', :path => '../' # 关联你的RN库项目 end检查Build Settings继承
打开库项目的Build Settings,确认以下选项包含$(inherited):Framework Search PathsHeader Search PathsOther Linker Flags
这一步是让Xcode继承CocoaPods自动生成的依赖路径配置。
调整导入方式(可选)
如果还是报错,尝试用传统的头文件导入代替模块导入:#import <MyTargetFramework/MyTargetFramework.h>清理重建项目
执行以下操作彻底清理缓存:- 删除Xcode的DerivedData文件夹(可通过
Xcode -> Preferences -> Locations找到路径) - 终端执行
pod deintegrate,然后pod install - Xcode中执行
Product -> Clean Build Folder,再重新构建
- 删除Xcode的DerivedData文件夹(可通过
关键注意点
你的RN库最终是要被示例应用(或其他RN项目)引入的,所以要确保:
- 库项目的依赖不会和宿主应用的依赖冲突
- 若
MyTargetFramework是私有框架,要在Podfile中正确配置它的源路径
内容的提问来源于stack exchange,提问作者Vyacheslav Orlovsky
相关产品推荐
相关产品推荐

