AAR依赖项-是否捆绑?

时间:2019-07-23 07:14:52

标签: android gradle dependency-management aar

我正在开发自己的SDK,而后者又依赖于某些第三方SDKS。例如-OkHttp。

我应该将OkHttp添加到我的build.gradle还是让我的SDK用户包括?在这种情况下,他们可能会“无论如何”使用它,因此可以肯定地说他们已经拥有它。

要补充的一点-并非我的SDK的所有路径都需要“ OkHttp”,因此,从理论上讲,我的SDK的某些用户只能使用这些部分,而在其APK上没有OkHttp。

我正在考虑的另一件事: 如果我确实通过build.gradle嵌入OkHttp-SDK的用户如何使用该OkHttp库,而不是使用另一个副本?

3 个答案:

答案 0 :(得分:2)

使用implementation并将其打包-消费者仍然可以exclude

一个人不能依靠某种东西,然后就不能打包;这不会建立。

在应用程序包中,它可以/必须仅存在一次...所以有什么意义?

答案 1 :(得分:2)

  

我应该将OkHttp添加到我的build.gradle中,还是让我的SDK用户包括它?

build.gradle中添加依赖项并不意味着将依赖项打包在aar文件中。 aar 文件不包含传递依赖项,并且没有用于描述库使用的依赖项的pom文件。

将工件上传到 maven存储库中,您将拥有aar和一个pom文件,其中将包含依赖项列表。
这样,gradle将自动下载所有依赖关系树,并且您可以将gradle配置为排除相同的库。

答案 2 :(得分:-1)

您需要了解Gradle中的api和实现 link会有所帮助

Api: 角色:声明,API,依赖项

消耗品?否

可解决?否

说明:应在此处声明依赖项,这些依赖项将以可传递方式导出到使用者以进行编译。

实现: 角色:声明,实现,依赖项

消耗品?否

可解决?否

描述:在这里,您应该声明依赖关系,这些依赖关系纯粹是内部的,并不打算向消费者公开。