我有一个应用程序将有多个实例。实例在某些资源上会有所不同,可以分为两组:
- 仅在(未)注释的代码中有所不同,整个代码都存在
- 颜色
- 字符串
- 布局上的细微差别(例如,在一种情况下,某些组件将消失,在另一种情况下,它们将可见,但代码仍然存在)
- 完全替换(名称、文件)
- 包名称
- 绘图
- res/raw 中的证书(所有证书不得存储在那里,仅适用于特定实例)
处理这些要求的最佳方法是什么?使用不同的 git 分支?
我使用 git(smartgit 客户端)。我想当我对不同的实例使用不同的分支时,所有的要求都可以得到满足。但我担心这种方法不适用于第二组 - 完全替换(名称,文件)。有什么建议吗?
PS:我知道添加新功能时,我需要从某个主分支 merge 到所有其他分支。
最佳答案
毕竟 git 方法不是那么正确。使用 Gradle 构建多个应用程序实例(产品风格)这是正确的做法:
1) 每个应用实例的特定文件和资源
颜色和字符串位于资源文件中:Project/module/src/instance_name/res/values/instance_name_cfg.xml
。
布局位于:Project/module/src/instance_name/res/layout/instance_name_cfg.xml
Java代码位于:Project/module/src/instance_name/java/package.name/MyClass.java
drawables(PNG图像)位于:Project/module/src/instance_name/res/drawable/
,ic_launcher图像位于仅在不同文件夹中的相同路径(drawable-hdpi,...)
常用文件和资源位于Project/module/src/main/
文件夹中。
2)第一张图片中有整个文件结构。
实例位于我的案例城市(达曼、吉达、布 pull 格、雷丁)。屏幕截图取自 Android Studio,您可以在其中切换构建变体(风格) - 在图片底部。
3)第二张图片中有 build.gradle 文件的 fragment 。
混合应用程序(实例)资源非常强大。如下图所示,资源、java 文件甚至 list 文件都可以在指令 sourceSets 中组合在一起。例如,达曼和吉达具有相同的 java 文件、一些公共(public)资源和每个实例的特定资源。在 sourceSets 中使用实例名称(例如 dammam)必须先于指令 productFlavours 中的声明。
关于android - Android 应用程序的多个实例 - git 项目管理最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23541655/