如何处理不同产品口味的资产

时间:2016-12-09 13:36:17

标签: android jenkins gradle

我有以下问题,其中:

  1. 我的Android项目中有多种产品口味。 {Say,Dev and Production}
  2. 我有一个CI,Jenkins建立我的项目并向不同的团队发布。
  3. 我有一个特定于Flavor的资产文件,但它取决于服务器上存在的数据。示例json为公司列表。
  4. 此列表与Dev vs Production不同。
  5. 由于这是一个巨大的json,我们将它包含在我们的assets文件夹中。在运行时下载此json将不允许用户至少第一次快速使用该应用程序。
  6. 目前在Jenkins的编译时,我们wget /下载这个json并将它们写入我们的assets文件夹。在编译时获取该环境/产品风味的最新资产。
  7. 这个wget在我的Jenkins中写成shell命令。成功完成wget后,我们运行gradle assembleDev,重复步骤6,然后重复gradle assembleProduction
  8. 现在的问题在于,由于两个原因,我不愿意在Jenkins中使用这个wget 1)环境特定资产/ json在开发人员机器上不可用于本地测试,因此他们需要始终注意。
    2)Jenkins中的代码显然不在我的VCS / Git中。我觉得不舒服。
    可能的解决方案是什么?
    PS: - 为了正确看待,我有22种产品风味和8种这样的jsons。

1 个答案:

答案 0 :(得分:0)

在我们的生产设置中,我们目前正在解析Google表格文档以查找变量并将其写入strings.xml文件。 所以是一个类似的场景。

我们在Gradle构建脚本中执行此操作,该脚本调用Java类,然后执行网络逻辑,将下载的数据返回给Gradle,Gradle将其写入正确的strings.xml文件。

这意味着我们的所有代码都存在于我们的git存储库中,可以这样处理。

我发现这很优雅。

注意:我们目前不区分产品口味,但可以通过Gradle中的一些额外行轻松完成。