[我感到被困在迦太基世界和Swift Package Manager(SPM)世界之间,就像被困在炼狱中。
我正在开发a Swift library/SDK,直到现在,我一直在使用Carthage作为依赖项。但是由于SPM终于可以在iOS上使用,所以我觉得对于希望使用此库的人来说,可以通过SPM包含它会很棒。
但是,我碰壁了。我的依赖项之一,即BitcoinKit与迦太基一起工作,但SPM支持被破坏。
为了分发我的库,我需要有一个Package.swift
文件,以及其他一些文件(自述文件,Sources
中的源文件和Tests
中的测试)。我还需要在上述Package.swift
文件中声明我的依赖关系,以便SPM recursivley可以解析所有依赖关系(当人们通过SPM安装我的库时)。这是我卡住的地方...
由于我仍在使用Carthage,因此我需要一个Xcode Project文件来设置此Carthage依赖项。但是现在我的源文件无法导入SPM依赖项。找不到它们。似乎我必须包括使用Xcode和Add Package Dependency
feature (Apple doc here)的SPM软件包依赖项。这不是我想要的,我要Add Package Dependency
文件声明库使用的SPM软件包的相同版本。为了清楚起见,由于迦太基,我需要一个Xcode项目,因此出现了这个问题。
[所以我想也许我可以用Carthage构建BitcoinKit(就像我现在所做的那样),并在我的库中包含构建的二进制文件(Package.swift
),并在.Carthage/Build/iOS/BitcoinKit.framework
中引用它,但这不起作用,因为SPM不起作用(还?)支持二进制文件(Package.swift
)。
1)等到有人聪明地修复了BitcoinKit中破碎的SPM支持(我已经尝试过并失败了),然后删除我的Xcode项目文件并完成到仅SPM的过渡,现在坚持使用迦太基...] >
2)尝试在通过Xcode relevant Swift Forum Thread功能安装的库中内部使用SPM软件包,并手动将这些版本与我在Add Package Dependency
中声明的版本同步。那会行吗?无论如何,这都是糟糕的解决方案。
3)希望在SPM支持时将通过迦太基构建的Package.swift
作为二进制文件包括在内吗?什么时候?可能要花一点时间?
4)BitcoinKit也可以与Cocoapods一起使用,但是我想这让我无处可去,甚至更糟,因为Cocoapods创建了BitcoinKit.framework
文件。
5)等到苹果公司希望进行更改(有人知道是否有任何计划吗?),以便即使与Xcode项目文件一起使用时,也可以通过.xcworkspace
文件包含Swift软件包?我可以继续通过Carthage使用Bitcoinkit,只在一个地方声明我的SPM软件包,我想SPM / Xcode / Swift将负责将依赖项集成到我的Xcode项目中,但要通过Package.swift
文件进行更新和管理。 ..?
6)还有其他替代的真实解决方案吗?
我感到被困在迦太基世界和Swift Package Manager(SPM)世界之间,就像被困在炼狱中一样。我正在开发Swift库/ SDK,直到现在,我一直在使用Carthage做...
[没有研究整个'使比特币工具包与SPM一起工作',我认为'链接迦太基预建二进制文件'的想法至少作为临时解决方案听起来最好。