Package.swift与Xcode 11 Project一起使用,如何与Carthage和SPM一起使用?

问题描述 投票:2回答:1

[我感到被困在迦太基世界和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做...

ios swift xcode carthage swift-package-manager
1个回答
0
投票

[没有研究整个'使比特币工具包与SPM一起工作',我认为'链接迦太基预建二进制文件'的想法至少作为临时解决方案听起来最好。

© www.soinside.com 2019 - 2024. All rights reserved.