我已经在应用程序商店批准了我的应用程序,现在我的客户端需要在应用程序中使用一些额外的功能,我正在考虑为该客户端提供不同的代码库,但如果我必须为更多客户端自定义应用程序,该怎么办?将来,如果在实际代码库中进行了增强,我将必须将实际代码库中的更改合并到所有其他代码库(自定义代码库),这将是费力的。 任何帮助,建议将不胜感激。
答案 0 :(得分:3)
我们在我工作的公司这样做,我们为所有不同的应用程序使用相同的代码库,我们甚至可以用不同的方式对它们进行标记。我们为此创建了一个品牌系统,它基于应用程序中的品牌来实现,因此我们可以设置不同的text
,colors
,images
,然后需要特定于粒子品牌可以设置在该品牌。因此,最好的方法是为您需要的每个品牌创建不同的目标(每个目标都是自己的应用程序),并确保源正确链接。
您还可以创建一个包含所有共享代码的框架,然后将所有单独的代码放在应用程序中,或者将其添加到框架中,然后将其分成单独的功能,例如具有{{1}的类} Login Process
的一个类Emailing
的一个类Printing
的类,依此类推。然后,如果客户想要拥有另一个客户端的功能,那么您已经拥有了代码,而您只需要调用它。这将节省开发时间,修复错误,并允许您花更多时间开发更多功能而不是修复旧功能。使用SVN或GIT也是存储代码的好方法,可让您轻松创建应用程序。例如,您可以创建框架和模板应用程序的主干版本,并为框架的增量版本和所有不同品牌的客户创建分支。在开发应用程序时,源代码控制非常重要。
我公司如何做到这一点的一个例子是,我们为一个客户提供了一个项目,然后他们就每个品牌都有一个目标。因此,如果我们有ClientA并且他们想要相同应用程序的3个不同版本,那么我们将创建项目并将其称为ClientA,而不是有3个目标称为Storing data
,Brand1
和Brand2
然后,如果其中一个应用程序(目标)出现错误,那么您就知道它将出现在其他应用程序中,您可以通过修复一个问题来修复所有三个应用程序。
这确实存在一些问题,因为您可以拥有庞大的代码库来维护,但它们都在一个地方,因此更容易维护。如果您在代码库中有一个错误,它将存在于每个应用程序中,但它只是一个修复而不是每个应用程序的修复。最后一个问题是你必须创建一个非常复杂的框架,但是this可能会有所帮助。
我相信创建框架的所有优点都超过缺点。所以我建议创建一个所有应用程序都链接到的框架。另请参阅为CSS创建一个更简单的系统,但对于iPhone,iPad或Mac OSX。我花了两个多月的时间来开发这样一个系统,这样可以让应用程序很容易被标记(样式化),而不需要知道任何目标-c,所以目前我们可以将UIElements添加到我们的应用程序并设置所有元素属性没有开发人员与任何目标-c进行交互。这样做的原因是我们团队中没有那么多人知道objective-c,因为我们是一家互联网开发公司,而不是一家移动开发公司,因此很多团队都没有CSS,这也可以在Windows计算机上完成并使用我们的Mac服务器构建,然后构建.ipa文件并将其发送回开发人员,这样就不需要实际的Mac。
希望这有点帮助。
答案 1 :(得分:0)
使用source control系统,如SVN或GIT。我推荐使用Git,因为它可以在没有中央存储库的情况下在本地使用,并且Xcode支持它。
源代码管理可让您轻松管理同一应用的不同版本。在您的情况下,您将检查当前版本到存储库。然后,您可以创建一个分支以实现客户端的新功能。之后,您可以将更改合并到主代码库中。
答案 2 :(得分:0)
源代码控制必须具有您尝试编写的代码,但在这种情况下,为不同的功能维护多个代码库可能不是非常有效。当两个代码库变得非常不同时,你将获得的冲突数量巨大。
根据您的功能有多重,我很可能会采用“恒定方式”。
我们的想法是为每个代码提供相同的代码,但是基于常量,比如客户端的名称,显示或隐藏这些功能。在编译和分发之前,您只需将常量更改为正确的客户即可。
伪代码
#define Customer = CUSTOMER_A
if (Customer in (CUSTOMER_A, CUSTOMER_B) {
[self showButtonPickAContact]
}
<强>上行强>
<强>下行强>