我在一家拥有约20个项目的公司工作,所有项目都使用各种内部和外部库。目前,我们正在将Android项目迁移到Android Studio和Gradle版本。为了使迁移对应用程序开发人员团队产生轻微影响,我们创建了一个迁移清单。我们的迁移清单中最重要的一个是在版本控制(实际上是SVN)中对不同版本进行版本控制的方式。
当前(Eclipse ADT)我们的两个项目使用"可视化皮肤策略,包含一个基础库项目,包含所有Java代码和各种客户端项目,通常使用基础库项目并且只更改图像, “' res'中的可绘制和文本资源文件夹中。
未来(Android Studio + Gradle)要迁移到Android Studio和Gradle构建环境,探索大部分优势,我们会考虑使用gradle风格的最佳方式。因此,迁移后的项目结构如下(仅考虑客户端项目,因为基础库项目位于工件中):
|- my-project
|
|- client-project
| |
| |- src
| | |
| | |- project-1
| | | |
| | | |-res
| | | | AndroidManifest.xml
| | | |
| | |- project-2
| | | |
| | | |-res
| | | | AndroidManifest.xml
| | | |
| | |- project-3
| | | |
| | | |-res
| | | | AndroidManifest.xml
| | | |
| |
| | build.gradle
|
| /gradle
| build.gradle
| settings.gradle
但SVN结构是:
|- base-library-project
| |- trunk
| |- tags
| |- branches
|
|- client-project-1
| |- trunk
| |- tags
| |- branches
|
|- client-project-2
| |- trunk
| |- tags
| |- branches
|
|- client-project-3
| |- trunk
| |- tags
| |- branches
我们的问题是: 版本控制文件夹的最佳方法是什么? 一体化SVN项目?分别?如果单独,怎么做?
目前,在Eclipse ADT中,每种风味都是' (或客户端)是一个项目,并在SVN中单独版本化。但是,有时,我们需要生成一个客户端项目的版本,并仅生成您的标记。
您如何使用此方案? 有提示吗?
感谢您分享您的经历。
答案 0 :(得分:0)
将所有内容移动到一个存储库中或将它们保持分离归结为个人选择。我最近做了类似于“视觉皮肤策略”的应用程序,就像你上面提到的那样。对我来说,我发现将所有东西都移到一个存储库中更为温和。
如果你想保留单独的存储库,你必须拥有project1的存储库,包含资源的项目2,Manifest等,并将它们克隆到你的客户端项目src文件夹中,然后在客户端项目gradle构建文件中添加它们作为flavor。我不确定你的意思是'仅生成你的标签',但如果你想单独构建它们,你可以使用
gradleAssemble{Appname}Release
另一个方便的功能是您可以在风味声明中指定不同的包名称。
productFlavors {
project1 {
applicationId "com.client-project.parjectOne."
}
这可以减少对多个清单文件的需求。