我正在开发一个带有手表和小部件扩展的Swift iOS应用程序。
到目前为止,我有一个Shared
文件夹,在那里检查文件是否有需要它们的所有目标。这是可行的,但我注意到这些文件随后会针对每个目标进行编译。
我更喜欢将应用程序的共享核心构建一次,然后用作每个目标的依赖项,从而节省编译时间。
在应用目标之间共享代码和资产的良好实践是什么?
到目前为止,我研究了static library
和framework
。我排除了静态库,因为除了代码之外,我还想共享资产,所以这意味着我应该创建一个新的框架,并将文件移动到那里?
我尝试了这种方法,添加了一个框架作为所有目标的依赖项,但是当框架中的代码发生更改时,似乎并没有重新构建框架,我这样做对吗?谢谢!
2条答案
按热度按时间wgmfuz8q1#
框架似乎是正确的道路,我在构建它时遇到的问题都是由这个引起的:
我不知道为什么会发生这种情况,但解决这个问题的一种方法是进入您的构建设置,并将框架搜索路径定义为包含有问题的框架的文件夹。如果框架位于项目目录中,只需将框架搜索路径设置为
$(SRCROOT)
,然后将其设置为recursive
。我不得不在
Project Build Settings
而不是Target Build Settings
中完成此操作。https://stackoverflow.com/a/31077255/38729
sqougxex2#
最新的Apple项目似乎正在走嵌入式Swift Packages路线。你可以在这里看到这个架构的例子:https://developer.apple.com/documentation/swiftui/backyard-birds-sample
还有Ice Cubes,一个开源的Mastodon客户端。这是另一个很好的嵌入式SPM实现的例子:https://github.com/Dimillian/IceCubesApp