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

In Gradle, [how] should we target both Android and JRE?

回复:Consider updating JDK version for java-json-tools repos

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

如果答案是 "more flavors",是否有关于如何通过 Gradle / Travis 完成这些多重构建的指示?

我是一个相当新的维护者,Gradle 新手并且不做 Android 开发,所以我确定我不知道其中的微妙之处。看起来 Android 支持以前是 "it appears to not break people" 而不是显式测试,我想改变它。

找到的文档:

我们一般recommendation是:

If you need support for JDK 1.7 or Android, use the Android flavor.

Android 风格是 JRE 风格的一个子集,因此如果您的代码是针对 Android 风格构建的,您的用户可以替换为 JRE 风格(通过声明对它的依赖) ,您的代码仍然有效。

所以我们建议根据 Android 口味。 (我们这样做是为了 at least one Android-compatible project of our own。)

如果需要,您可以发布您自己的库的多个版本。但是,我不推荐它。我们选择通过 运行ning Maven 两次来完成它,但如果这样更容易,它可能可以在单个 Maven(或 Gradle)运行 中完成。如您所见,我们通过使用版本号来区分风格,因为 that was the least bad solution we could find.