我一直在研究如何构建可可触摸框架,为第三方库添加依赖管理器,最后在应用程序项目中添加框架,但没有成功。
首先,我想说我计划使用的框架将在我编写应用程序时进行开发和测试,它将是主要git项目的git子模块。
理想情况下,整个项目的结构看起来就像那样
项目
这是一种很好的工作方式吗?
其次,我面临的主要问题是如何在我的框架中添加依赖管理器
我试过“迦太基”和“Cocoapods”
使用Carthage主要项目崩溃因为它找不到框架和“Cocoapods”,因为它创建了一个工作区,我无法导入框架,或者至少我不知道如何去做。
有没有人知道在没有应用程序项目配置的情况下将依赖管理器集成到可可触摸框架中的方法?
谢谢。
由于不公平的downvotes删除了已编辑的部分
迦太基是我最喜欢的经理,所以我可以说比Cocoapods更多。
在构建框架时,您希望链接到由Carthage管理的任何依赖项,但不要将它们包含在框架中。这样做比较简单。只需转到您的框架目标并添加来自<project-dir>/Carthage/Build/<platform>
的Carthage构建框架。 Carthage目录也应该在你的框架搜索路径中结束。
在你的主应用程序项目中,你需要做同样的事情,即。添加Carthage构建目录中的帧,并确保框架搜索路径中的目录。
然后你需要做一个额外的步骤。您需要添加一个运行脚本阶段并告诉它执行carthage copy-frameworks
然后将每个Carthage构建的框架文件添加到该阶段。这样做的原因是Apple构建框架的方式需要一些额外的工作才能复制到应用程序的包中。
我怀疑你的崩溃无法找到框架的原因是这个阶段没有添加到你的应用目标。因此,当应用程序运行时,它无法找到框架。
打开编辑和建议!在为iOS发布Swift Package Manager时继续
另外,如果事情不太正确,我想道歉。
回答:
经过一段时间尝试不同的方法和方法以及drekka答案,我已经想出如何使用Carthage作为我的可可触摸框架的依赖管理器。
My Framework包含所有Carthage文件和文件夹,包括Frameworks但它没有运行脚本。
因为我的框架包含依赖于导入的框架的公共变量,所以当我在App项目中使用它们时,Xcode可以找到它们。
所以在我的App目标“TheApp - General - Linked frameworks and libraries”中,我拖放了一个幻灯片框架参考:
实际上,该位置被添加到“TheApp - 构建设置 - 搜索路径 - 框架搜索路径”中
此时,应用程序在模拟器中编译运行,但在实际设备中运行时崩溃,如问题中所示。为了解决这个问题,我在“TheApp - Build阶段”中添加了Carthage的潦草书写
完成工作!
我期待一个更简单的集成,就像你在android中使用gradle一样,但是,到现在为止,我认为这是最好的方法。