所以,我有以下情况:
我正在开发一个用于不同公司的iOS应用程序。 对于每家公司,存在一些差异:
最好的方法是制作单个代码,然后覆盖每个应用程序的一些值和资产。
在Android中,我可以通过覆盖资源来创建一个库模块(具有应用程序的核心)和每个公司的应用程序模块(没有Java代码),从而轻松实现这一目标。
我正在尝试在XCode上开发相同的结构,但对我来说这样做的方式并不清楚。 经过简短的研究,我考虑了一些选项:框架,静态库和子项目。
哪一个是正确的做法?我应该考虑使用依赖/包管理器(如Swift Package Manager,CocoaPods还是Carthage)?
这些包管理器是依赖于git的吗?因为我正在使用SVN,此时切换到Git是不可行的。
项目设置:
XCode 9
斯威夫特4
答案 0 :(得分:3)
我建议你使用目标。
让我告诉您如何使用assets
/ settings
处理此层次结构。
我的Assets
目录
images
images
/ colors
/ certificates
您必须通过仅选择其需要引用的目标来更改Target Membership
的{{1}}。
例如,Company1 > Images
需要引用所有common > Assets
。
如果您需要在每个目标中执行不同的操作,则可以对代码执行相同的操作。
就个人而言,我使用targets
的强大功能将代码拆分为不同的源文件,以便能够引用不同的目标。
将此文件提交至extension
目标
Company1
将此文件提交至extension FirstViewController {
func doSomething() {
// implement this method for the company 1
}
}
目标
Company2
将此文件提交给所有extension FirstViewController {
func doSomething() {
// implement this method for the company 2
}
}
targets
您还可以在class LandingEmptyViewController {
func foobar() {
self.doSomething()
}
}
flags
使用这些解决方案,您将能够在Android中执行相同操作。
答案 1 :(得分:0)
您可以使用静态框架来开发此类项目。现在,Static框架有自己的起伏。
https://www.raywenderlich.com/65964/create-a-framework-for-ios
注意:在发布应用期间,请不要忘记确保ipa文件的正确有效负载结构。