在Gradle中,我们应该如何同时针对Android和JRE?



re:考虑为 java-json-tools 存储库更新 JDK 版本

在Gradle构建的Java库的早期版本中,它依赖于Guava的单一版本,并且被认为可以从Android上使用。从那时起,Guava将其构建/版本分为两种版本:JRE(JDK 1.8(和Android(JDK 1.7(。这是否意味着这个库现在也需要拆分为风格并生成单独的二进制文件?或者一个SDK可以同时支持两者吗,如果我们坚持使用JRE支持就足够了?

如果答案是"更多口味",是否有有关如何通过 Gradle/Travis 完成这些多个构建的指针?

我是一个相当新的维护者,一个 Gradle 新手,不做 Android 开发,所以我确定我不知道所涉及的微妙之处。看起来以前的Android支持是"它似乎不会破坏人"而不是明确的测试,我想改变这一点。

找到的文档:

  • 格拉德尔
    • 创作多项目构建,尽管我不确定这是否真的应该是一个带有额外 Jar 任务的单个项目。
  • 崔维斯
    • 构建一个Android项目,目前还没有完成,除了库存JRE测试之外,任何事情都将是补充
    • 针对多个 JDK 进行测试

我们的一般建议是:

如果您需要支持 JDK 1.7 或 Android,请使用 Android 风格。

Android 风格是 JRE风格的子集,因此如果您的代码针对 Android 风格构建,您的用户可以替换 JRE 风格(通过声明对它的依赖关系(,并且您的代码仍然可以工作。

因此,我们建议根据Android风格。(我们至少为我们自己的一个与Android兼容的项目执行此操作。

如果需要,您可以发布自己的库的多种风格。但是,我不推荐它。我们选择通过运行两次单独的 Maven 来做到这一点,但如果这样更容易,它很可能可以在一次 Maven(或 Gradle(运行中完成。如您所见,我们使用版本号来区分口味,因为这是我们能找到的最不糟糕的解决方案。

最新更新