【发布时间】:2021-11-11 19:27:22
【问题描述】:
我正在尝试创建一个 Flutter 插件以使用本机库。 我尝试使用的这个库存储在一个私有存储库中,可以与 Swift Dependency Manager 一起使用。
这让我很头疼,因为我无法在我的插件中添加私有存储库依赖项(我在 .podspec 文件中找不到这样做的方法),所以我做了什么:
- 我已使用 Swift 包管理器将插件添加到示例项目中
- 手动将
MyDependency.xcframework文件夹复制到MyPlugin/ios文件夹 - 在 podspec 文件中引用它,如下所示:
s.preserve_paths = 'MyDependency.xcframework'
s.xcconfig = { 'OTHER_LDFLAGS' => '-framework MyDependency' }
s.vendored_frameworks = 'MyDependency.xcframework'
这样做我可以在插件的源代码中使用 MyDependency。
我目前的问题是:这只适用于模拟器。
在此之前,该项目在真实设备上运行没有任何问题。
另外,我已经直接从 Swift Dependency Manager 使用依赖项进行了测试,并且工作正常。我认为问题在于我将框架添加到插件的方式。
【问题讨论】:
-
你在没有
.xcframework的iOS物理设备上成功构建应用了吗?此外,您不需要添加所有 3 个步骤(cocoapods、SPM 和 xcframework)。只需将.xcframework拖入您的项目即可。 -
是的,没有 .xcframework 它工作正常。我不想将 .xcframework 直接拖到我的项目中。我需要创建一个可以在我们这里拥有的其他项目中使用的插件。另外,我(认为)没有直接访问 .xcframework 的权限。我执行这 3 个步骤只是为了让 SPM 下载的文件。
-
那么,您希望该封闭源代码的分发策略是什么?我不明白如果 SPM 是封闭源代码,您如何使用它。
-
第一个屏幕截图发生在您没有正确设置项目/设备时。您的设备需要自动添加到您的配置文件中。我认为您拥有 Apple Developer Program 会员资格并在签名和能力下选择了正确的团队?
-
第二个屏幕截图(在您的示例项目 Runner 中显示 SPM)只是您的库,它可能/可能没有
.xcframework。此外,当用户将您的插件添加到他们的项目中时,您的插件会通过 cocoapods 而不是 SPM 添加。当你屏蔽名字时,你会让事情变得更难看????。 SPM 不适用于您,恕我直言。
标签: flutter flutter-plugin podspec podfile flutter-ios