将 WatchKit 扩展代码 (git repo) 与现有 iPhone 代码 (repo) 分开

Posted

技术标签:

【中文标题】将 WatchKit 扩展代码 (git repo) 与现有 iPhone 代码 (repo) 分开【英文标题】:Keep WatchKit Extension code (git repo) separated from the existing iPhone code (repo) 【发布时间】:2020-02-07 21:41:23 【问题描述】:

我想在我现有的应用程序(目标 ios12)中添加一个 WatchKit 扩展(iOS13+ 上支持 SwiftUI),同时保持两个代码库分开(两个存储库)。

如何将 WatchKit 扩展代码与 Mobile One 分开? 我的 SwiftUI 手表应用程序是否仅适用于使用 WatchOS 6 和 iOS13 的用户,而不影响使用 iOS12 的现有用户? 应用二进制文件大小增加如何?

感谢阅读!

【问题讨论】:

我的回答解决了你的问题吗?如果是这样,请接受它,以便关闭答案。如果没有,请告诉我缺少什么。 感谢您的回答。它没有回答我的问题 - 对于尺寸,我想知道如何比较有和没有手表扩展的应用程序的大小。对于拆分代码,创建和导入相同的文件不会解决我试图解决的解耦问题 【参考方案1】:

我不确定是否有更简单的解决方案,但这个应该可行:

两个应用程序的分离:

如果您在 Xcode 中打开源代码管理导航器,您会看到分支、标签和远程属于项目导航器中的主条目,即属于 Xcode 项目。因此,为了拥有单独的存储库,您需要单独的 Xcode 项目,您可以为其分配单独的存储库。 但是,您可以在一个工作区中拥有多个项目,以便该工作区中的所有文件都可用。 要拥有一个独立应用程序和一个带有手表扩展程序的应用程序,只需使用您的独立应用程序设置一个工作区,然后添加另一个新项目。这个新项目需要原始应用的所有文件以及手表扩展。 由于您还需要另一个项目中的文件,因此您可以将它们从一个项目拖到新项目中,但随后它们将被复制(在拖动过程中会显示绿色 + 标记)。通常这不是您想要的,因为您通常不想单独维护两个副本。相反,您可以在查找器中显示这样的文件,然后将其从查找器拖到新项目中。在这种情况下,您只能选择复制参考。

两个应用程序的独立性:

由于您有两个独立的项目,您可以根据需要在目标的构建设置中设置部署目标。

尺寸:

每个项目将获得单独的产品,独立应用只有一个 xxx.app,而新项目 xxx.app、Watch.app 和 Watch Extension.appex。所以应该没有开销。

编辑(由于 Ouadie 在他的问题中的评论):

我不确定我是否理解您的问题: 通过上述过程,您将获得一个工作区,其中包含共享部分文件的两个独立项目。 “移动项目”与您现在使用的相同。它只有一个目标(尽管有测试目标),它专门使用所需的源构建。因此它的大小与现在相同。 “观察项目”是新的。它有 3 个目标,“移动”目标、Watch 目标和 Watch Extension 目标(尽管有测试目标)。它是使用共享源和其他监视扩展源构建的。因此它的大小更大,但增加当然取决于您的来源。 由于您有 2 个存储库,因此项目是解耦的,但两个存储库共享一些文件。如果您想完全解耦它们,您可以将文件从当前项目复制到新项目(而不是仅复制引用),但是您必须保留 2 个副本。 我希望这会有所帮助!

【讨论】:

以上是关于将 WatchKit 扩展代码 (git repo) 与现有 iPhone 代码 (repo) 分开的主要内容,如果未能解决你的问题,请参考以下文章

Watchkit , openParentApplication 和 WatchKit 扩展

根据扩展名将git repo文件移动到子文件夹

Apple WatchKit 扩展后台刷新示例代码

WatchKit 无法从 Pod 导入库

为啥从 WatchKit 扩展向 iOS 发送消息并得到回复如此缓慢?

WatchKit 扩展配置文件?