【发布时间】:2013-02-12 00:06:39
【问题描述】:
我正在开发一种产品,该产品将部署到许多不同的组织(理想场景,数十个)。系统的每次部署(由 iOS 和 Android 的原生应用组成)都将涉及以下内容:
- 特定于组织的品牌(即新皮肤)
- 与组织的身份验证系统和用户数据库集成
- 一些自定义功能取决于组织的需求
换句话说,核心功能在所有部署中都将保持不变,但每个实例的外观会有所不同,会与不同的身份验证系统挂钩,并启用/禁用某些功能。
我的问题:管理我们的 2 个移动代码库(iOS 和 Android)以尽量减少重复并简化部署过程的最佳策略是什么?
我们正在讨论的三个解决方案是:
创建一个跨所有实例共享的核心库(作为子项目/库项目或 git 子模块),并在顶部添加一个带有品牌和任何配置详细信息的薄层。
维护一个具有核心功能的 Git 分支,并为每个包含附加代码的部署创建一个新分支。
按照 stackoverflow 上一些聪明人的建议,做一些完全不同的事情。
你觉得哪个听起来最好?提前感谢您的任何反馈!
【问题讨论】:
-
我会选择选项 1。与 GIT 子模块中的库相比,GIT 分支会使维护变得更加困难 - 但这只是因为我喜欢子模块的功能保持不变,并且在每个使用/需要依据,可轻松更新。
-
噢,以及在启动应用程序后即时设置一些更动态数据的某种配置提要怎么样。至少在资源方面为您提供最大的灵活性 - 太糟糕了,苹果不允许动态库(通过下载使用)。
-
@bmat 您选择了哪种方法?我在这里也有同样的情况。
-
@Lizard 在 Android 端,我们最终将所有共享代码放入库项目中,并将其作为依赖项包含在白标项目中。在 iOS 上,我相信我们为每个部署创建了构建目标,并根据当前目标选择了白标资产。
-
@Lizard 您会将活动添加到白标项目中。需要注意的是,您必须设计共享代码,以便白标项目可以添加自己的屏幕而不会破坏任何内容。就我而言,部署之间唯一改变的是图像和字符串资产,因此您可能必须找到更灵活的解决方案。
标签: android ios deployment maintenance