我在一家有大约20个项目的公司工作,所有项目都使用各种内部和外部库。目前,我们正在将Android项目迁移到Android Studio和Gradle build。为了进行对应用程序开发团队影响较小的迁移,我们创建了一个迁移核对表。在我们的迁移清单中最重要的事项之一是版本控制(实际上是SVN)中不同风格的版本控制方法。
当前(Eclipse ADT)
我们的两个项目使用“可视化皮肤策略”,包含一个base-library-project和各种客户端项目,通常使用base-library-project,只更改'res‘文件夹中的图像、可绘制和文本资源。
未来(Android Studio + Gradle)
为了迁移到Android Studio和Gradle构建环境,探索您的大多数优势,我们认为利用gradle风格的最佳方式。因此,迁移后的项目结构如下所示(只考虑client-project,因为base-library-project在artifactory中):
|- 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中单独进行版本控制。但是,有时,我们需要生成一个客户端项目的版本,并且只生成您的标记。
您是如何处理此场景的?有什么建议吗?
感谢您分享您的经验。
发布于 2014-08-21 05:41:06
将所有内容移动到一个存储库中,还是将它们分开,归根结底取决于个人选择。我最近使用了一个类似的“视觉皮肤策略”应用程序,就像你上面提到的那个。对我来说,我发现在一个存储库中移动所有内容会更整洁。
如果你想保持独立的存储库,你必须有一个包含资源,清单等的project1,project2的存储库,并将它们克隆到你的客户端项目src文件夹中,然后将它们添加到你的客户端项目gradle build文件中。我不确定你所说的“只生成你的标签”是什么意思,但是如果你想单独构建它们,你可以使用
gradleAssemble{Appname}Release另一个方便的特性是,您可以在您的风格解密中指定不同的包名。
productFlavors {
project1 {
applicationId "com.client-project.parjectOne."
} 这可以减轻对多个清单文件的需求。
https://stackoverflow.com/questions/25174046
复制相似问题