我有这个需要。
我开发了一个应用程序,我想复制它。我可以复制和粘贴的项目,但如果我这样做10次可能是一个问题。问题是,如果我在第10个副本中发现了一个bug,我必须检查所有其他项目,而我不想这样做。
有一个干净的方法来解决这个问题吗?
换句话说,我只有一个大代码。我必须部署的应用程序之间的差异是:
- 启动器图标
- HTTP请求的域
- 软件包名称
- 闪屏
- 应用程序名称
- 应用程序内部的一些整数
- 一些资产
在Android中,我用gradle来做这件事,特别是用flavors。如何使用Swift做同样的事情?
3条答案
按热度按时间mo49yndu1#
创建具有多个目标的单个项目。每个目标都有一个不同的info.plist和您需要的任何其他更改,但是共享源。
编辑:
有一个名为xcodegen的开源工具,它允许您使用yaml(.yml)文件定义项目。然后运行xcodegen脚本,它将创建包含所有不同目标和依赖项的项目文件。这可能是构建包含相同源和构建规则但不同资产的多个目标的更简洁的方法。
nfs0ujit2#
我会用Git来做:
在您的 origin 存储库中,使用占位符准备您的项目:
Constants.swift
。.xcassets
中。(与保持不变的资产不同)例如图标。你已经可以添加你想在你的应用程序中拥有的图像集,但是把它们留空(或者添加占位符图像)提交并推送主项目后,为每个应用创建 forks。在分叉中,您可以更改已准备作为占位符的所有内容。
如果在某个地方有一个但是,将其固定在 origin 中。然后你就可以很容易地将更改合并到你的每一个分支中。
t2a7ltrp3#
下面是我的设置:
(1)新建一个Framework类型的项目。
将所有共享代码-扩展、子类、图像资源,甚至.xib文件-移动到this项目中。我创建了一个App/Bundle ID(“com.company.framework”),但我不确定是否需要提交App Store。此外,勾选“仅允许应用程序扩展API”将删除您将收到的警告。
对于像图像或文本文件这样的文件,创建bundle并将bundle拖到框架中。我发现你可以通过Xcode添加新的图片/文件。要检索它们,代码如下:
(2)创建第二个项目,这次是针对您的特定应用。
假设你把你的框架称为“内核”。所有公开声明的代码都可以通过添加:
现在,这里是最好的部分(对我来说):有两种方法可以使用此设置。
(3a)将framework .xcodeproj拖到应用项目中。
优点:你可以(a)对你的框架源代码进行修改,(B)同时构建这两个框架。
缺点:一次只能打开一个app项目,因为Xcode会检测到框架项目已打开。
(3b)将Kernel.framework项目拖到应用程序项目中。
优点:您可以一次打开所有应用程序。
缺点:你需要(a)在它的项目中修改你的框架源代码,并且-我认为-(B)用重建的框架手动更新每个应用程序。
我说“我认为”是因为我使用了前一种设置。一次只打开一个应用程序,这是一个很小的代价。通常情况下,如果你正在做一个框架的变化,它是一个单一的应用程序。
最终注解: