【发布时间】:2019-07-23 07:14:52
【问题描述】:
我正在开发自己的 SDK,而这又依赖于一些 3rd 方 SDKS。例如 - OkHttp。
我应该将 OkHttp 添加到我的build.gradle,还是让我的 SDK 的用户包含它?在这种情况下,他们可能“无论如何”都会使用它,因此可以肯定地说他们已经拥有它。
另外一点要补充 - 并非我的 SDK 的所有路径都需要“OkHttp”,因此,理论上,我的 SDK 的某些用户只能使用这些部分,而他的 APK 上没有 OkHttp。
我正在考虑的另一件事:
如果我确实通过build.gradle 嵌入了 OkHttp - 我的 SDK 的用户如何使用该 OkHttp 库,而不是使用另一个副本?
【问题讨论】:
-
我建立了一个图书馆,我遇到了同样的问题。就我个人而言,我认为让消费项目添加库会更好,因为您可以更好地控制消费项目的 gradle 中的内容。在主项目导入库的不利方面,Android SDK 可能存在问题,因为您的库可能包含对旧版本 X 库的引用(例如方法),并且它可能与其他库不兼容,消费项目已经有
-
不,您最好不要将一个通用库打包到您的可交付库中,因为打包在您的库中的那个会导致不必要的包重复错误。正如你所说的,对于一些客户来说,他们并不真正需要那个库。他们可能会抱怨库/apk 大小的影响(尽管他们可以通过应用代码收缩来减轻大小,但并非所有客户都知道这一点)。
-
如果你真的想把常用的库打包到你的库中,那么你最好将包/类扁平化到不同的包中(使用ProGuard工具可以做到这一点)避免包重复错误。例如。 ``` -flattenpackagehierarchy com.new.package.name ```
-
还有一点是库版本问题,考虑一下你打包低版本的通用库,但客户需要高版本的库。那么你会给你的客户带来一些不必要的麻烦。
标签: android gradle dependency-management aar