使用CocoaPods和Swift Package Manager设置库

时间:2018-11-19 13:44:06

标签: ios swift cocoapods libraries swift-package-manager

我在CocoaPods(BillboardSwiftLibrary)上创建了一个快速(iOS / MacOS)库。通常,它具有其资产和包含源文件的Classs文件夹。

我希望我的库支持Swift Package Manager,因此我将源文件从Classes文件夹移到了pod外部的Sources文件夹中。但是,仍然可以从“开发”窗格中访问它们。

现在我的库无法为Cocoapods启动而构建,但可以为Swift Package Manager编译,运行pod lib lint BillboardSwiftLibrary.podspec时出现以下错误

  

错误|文件模式:source_files模式不匹配   文件。

2 个答案:

答案 0 :(得分:2)

我从头开始写了很长的系列文章,内容涉及在Medium上“使用CocoaPods,Carthage,SPM支持和Travis创建iOS框架以运行测试,为发布自动化创建Fastlane”。希望对您有所帮助。

创建Swift框架很容易,但是同时添加CocoaPods,Carthage和Swift Package Manager支持听起来很吓人。除了添加Travis来对所有提交进行测试外,还添加Fastlane来为所有依赖项管理器自动化发布过程,这看起来就像是一部恐怖电影。但是不要害怕。完成本系列文章后,您可以轻松创建自己的Swift框架,并使用所有这些工具使其完美!

Part 1 — Create CocoaPod and release it.:您将创建自己的CocoaPod并将其释放。

Part 2 — Add Carthage support:在第1部分创建并发布的CocoaPod将通过迦太基安装。

Part 3 — Add Swift Package Manager support:在第1部分创建并发布的CocoaPod将通过Swift Package Manager安装。

Part 4 — Integrate Travis to build example project and run tests for framework:您可以通过CocoaPods,Carthage和Swift Package Manager安装的框架会在Travis上针对GitHub上的每次推送自动运行测试。

Part 5 — Integrate Fastlane to automate release processes by running just one line of command.

每次您要通过CocoaPods,Carthage和Swift Package Manager发布新版本的框架时,都必须执行以下步骤:

1-对新版本进行更改

2-运行测试以确保它们正常工作

3-提交并推送新版本的更改。

4-将新版本标记为git

   git tag 0.1.1
   git push origin 0.1.1

Carthage and Swift Package Manager从GitHub安装您的框架。如果您正确配置了框架,则可以在此步骤之后通过Carthage或Swift Package Manager进行安装。但是,CocoaPods还有4个步骤来完成释放过程。

5-增量podspec版本=>,即s.version ='0.1.1'

6-验证本地podspec:

pod lib lint ODCustomFramework.podspec

7-验证发布的吊舱

pod spec lint ODCustomFramework.podspec

8-发布

pod trunk push ODCustomFramework.podspec

在Travis和Fastlane集成之后,第2、4、5、6、7和8步是自动进行的,不再需要在每次要发布新版本时重复这些步骤。

1-对新版本进行更改

2-提交并推送新版本的更改。

3- Travis每次按下后都会自动运行测试。

4-运行以下fastlane命令以自动化所有发布过程。 (第4、5、6、7、8步)

exec fastlane major | minor | patch

答案 1 :(得分:0)

从@Larme的评论中,我找到了答案。

在podspec文件中,将类的位置更改为source文件夹。 因此,将s.source_files从更改为BillboardSwiftLibrary/Classes/**/*Sources/**/*,并且pod lib lint BillboardSwiftLibrary.podspec正常工作。