You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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/plugin
    
    之后执行flutter 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 08:40:05