繁体   English   中英

Flutter 插件:在 iOS 和 MacOS 之间共享代码

[英]Flutter Plugin: share code between iOS and MacOS

我在插件的根目录中有一个公共目录,其中包含应该由 iOS 和 MacOS 共享的代码。 我将两者的.podspec文件中的source_files为指向公共目录: s.source_files = '../common/Classes/**/*' ,但是现在当我构建任何一个 ios/macos 示例时,构建失败并显示找不到插件导入的错误。

/Flutter/GeneratedPluginRegistrant.swift:8:8: 错误:没有这样的模块'plugin_name'

这是在 iOS 和 Macos 之间共享代码的正确方法吗? 我该如何解决?

看来这不是在 iOS 和 MacOS 之间共享代码的正确方式。 相反,我应该做的是:

  1. 保持.podspec文件不变。
  2. 在插件代码库的根目录下创建一个名为 apple 的目录(名称无关紧要)。
  3. 将公共代码移动到步骤 2 中创建的目录。
  4. ios/Classesmacos/Classes创建每个公共代码文件的符号链接(假设在相应的目录中):
ln -s ../../apple/Classes/SwiftSomePlugin.swift SwiftSomePlugin.swift

就我而言,我只有一个文件,但如果您有更多文件,则需要为每个文件创建符号链接。

最终结果应如下所示:

├── apple
│   └── Classes
│       └── SwiftSomePlugin.swift
├── ios
│   ├── Assets
│   ├── Classes
│   │   ├── SomePlugin.h
│   │   ├── SomePlugin.m
│   │   └── SwiftSomePlugin.swift -> ../../apple/Classes/SwiftSomePlugin.swift
│   └── some.podspec
├── macos
│   ├── Classes
│   │   └── SwiftSomePlugin.swift -> ../../apple/Classes/SwiftSomePlugin.swift
│   └── some.podspec

现在运行构建,它应该会成功。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM