使用各种口味对Android Gradle项目进行版本化的最佳方法是什么?

时间:2014-08-07 04:16:24

标签: android-studio android-gradle

我在一家拥有约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中单独版本化。但是,有时,我们需要生成一个客户端项目的版本,并仅生成您的标记。

您如何使用此方案? 有提示吗?

感谢您分享您的经历。

1 个答案:

答案 0 :(得分:0)

将所有内容移动到一个存储库中或将它们保持分离归结为个人选择。我最近做了类似于“视觉皮肤策略”的应用程序,就像你上面提到的那样。对我来说,我发现将所有东西都移到一个存储库中更为温和。

如果你想保留单独的存储库,你必须拥有project1的存储库,包含资源的项目2,Manifest等,并将它们克隆到你的客户端项目src文件夹中,然后在客户端项目gradle构建文件中添加它们作为flavor。我不确定你的意思是'仅生成你的标签',但如果你想单独构建它们,你可以使用

gradleAssemble{Appname}Release

另一个方便的功能是您可以在风味声明中指定不同的包名称。

 productFlavors {
    project1 {
        applicationId "com.client-project.parjectOne."


    }  

这可以减少对多个清单文件的需求。