【问题标题】:Flutter Plugin: share code between iOS and MacOSFlutter Plugin:在 iOS 和 MacOS 之间共享代码
【发布时间】:2021-12-30 08:54:30
【问题描述】:

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

/Flutter/GeneratedPluginRegistrant.swift:8:8: error: no such module 'plugin_name'

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

【问题讨论】:

    标签: ios macos flutter flutter-plugin


    【解决方案1】:

    这似乎不是在 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
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-02
      • 1970-01-01
      • 2014-09-24
      • 1970-01-01
      • 2014-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多