就设计/方法而言,显然有很多选择。
我已经做过很多次了(应用商店里有应用程序),真的就像开发任何框架一样。
第一: AppDelegate
。解决此问题的简单方法是将应用程序的AppDelegate
子类化为您的框架AppDelegate
:
@UIApplicationMain class ParentAppDelegate: FrameworkAppDelegate { }
只需确保 App 调用super
所有相关方法即可。
第二:依赖。这可能是最烦人的部分,因为框架不能嵌入其他框架。但是您仍然有一些简单的选择:
- 让封闭的应用程序嵌入所需的框架
- 将所需框架的源代码直接添加到您的框架中。
- 使用一个依赖管理器(例如cocoapods)来为你处理这个问题。
其他问题:您很容易遇到的一个陷阱是使用捆绑包。任何时候动态加载图像/字符串/IB 参考/等。您需要指定您正在使用框架的捆绑包,因为有时它可以默认使用应用程序的捆绑包。最简单的方法是使用这个初始化,例如Bundle(for: self.self)
另请记住,info.plist
您的框架需要的设置和权利需要由父应用程序添加。
对方法的一般评论:我的建议(接受或放弃☺️)对于简单地将您的完整应用程序添加到客户的应用程序是谨慎的。除了 IP 和 App-Review 问题之外,它还可能导致增加很多复杂性或当前应用程序的分支以支持它,从而使未来的维护变得麻烦。
相反,我建议仅将您的客户需要的应用程序部分放入一个单独的框架中,您和您的客户都可以将其用于您的单独应用程序。