如何在Flutter插件中使用自定义sharing.framework?遇模块未找到问题
解决Flutter插件中"sharing模块未找到"的问题
以下是针对你问题的具体排查和解决步骤:
1. 验证podspec路径与大小写匹配
- 确认插件目录下的
ios/Frameworks/sharing.framework路径完全正确,iOS文件系统区分大小写,比如Sharing.framework和sharing.framework会被视为不同文件,检查podspec里的路径和实际文件名是否一致。 - 建议在podspec里使用相对根路径的写法,避免路径歧义:
s.vendored_frameworks = "${s.root}/ios/Frameworks/sharing.framework" s.preserve_paths = "${s.root}/ios/Frameworks/sharing.framework" - 移除多余的
s.frameworks = 'sharing'配置,因为vendored_frameworks已经会自动处理链接,重复配置可能导致冲突。
2. 彻底清理缓存并重新安装依赖
- 清理Flutter工程缓存:
flutter clean - 进入iOS目录,清理pod依赖并重新安装:
cd ios pod deintegrate pod cache clean --all pod install - 如果是本地开发的插件,确保主工程
pubspec.yaml里的插件路径正确,比如:
之后执行dependencies: your_plugin_name: path: ../path/to/your/pluginflutter pub get同步依赖。
3. 检查插件Xcode项目的Framework搜索路径
- 打开插件的
ios/YourPlugin.xcworkspace,在Build Settings中找到Framework Search Paths,添加路径$(SRCROOT)/Frameworks,并设置为Recursive(递归搜索)。 - 确认Build Phases的Link Binary With Libraries中,
sharing.framework的状态是:如果是动态framework选择Embed & Sign,静态framework选择Do Not Embed(避免主工程重复嵌入)。
4. 确认import语句与Framework模块名一致
- 右键
sharing.framework选择「显示包内容」,打开Modules/module.modulemap文件,查看实际的模块名称,比如:framework module Sharing { umbrella header "Sharing.h" export * module * { export * } } - 在插件的代码中,必须使用模块名进行import,比如上面的例子要写
import Sharing而不是import sharing。
5. 适配静态/动态Framework配置
- 如果
sharing.framework是静态库类型,需要在插件的podspec中添加:
确保插件以静态框架形式被主工程引用,避免链接冲突。s.static_framework = true
内容的提问来源于stack exchange,提问作者Taha Halabi
相关产品推荐
相关产品推荐

