【问题标题】:How to handle assets for different Product Flavors如何处理不同产品风味的资产
【发布时间】:2017-04-25 00:12:55
【问题描述】:

我有以下问题:

  1. 我的 Android 项目中有多种产品风格。 {说,开发和生产}
  2. 我有一个 CI,Jenkins 来构建我的项目并向不同的团队发布版本。
  3. 我有一个特定于风味的资产文件,但取决于服务器上存在的数据。公司列表的 json 示例。
  4. 此列表在开发与生产上有所不同。
  5. 由于这是一个巨大的 json,我们将它包含在我们的资产文件夹中。在运行时下载此 json 将不允许用户至少在第一次快速使用该应用程序。
  6. 目前在 Jenkins 编译时,我们 wget/download 这个 json 并将它们写入我们的资产文件夹。在编译时获取该环境/产品风格的最新资产。
  7. 这个 wget 在我的 Jenkins 中是作为 shell 命令编写的。成功 wget 后,我​​们运行 gradle assembleDev,重复第 6 步,然后 gradle assembleProduction

现在问题在于,我不喜欢在 Jenkins 中使用这个 wget,原因有两个。
1) 环境特定资产/json 在开发人员机器上无法用于本地测试,因此他们需要时刻注意。
2) Jenkins 中的代码显然不在我的 VCS/Git 中。我对此感到不舒服。
可能的解决方案是什么?
PS:- 客观地说,我有 22 种产品风味和 8 个这样的 json。

【问题讨论】:

    标签: android jenkins gradle


    【解决方案1】:

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

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

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

    我觉得这很优雅。

    注意:我们目前不区分产品风味,但这很容易在 Gradle 中添加几行代码。

    【讨论】:

    • 您的 java 程序是您的 Android 项目的一部分还是单独运行。你能分享一些代码吗?
    猜你喜欢
    • 1970-01-01
    • 2015-10-06
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-06
    • 1970-01-01
    相关资源
    最近更新 更多