我正在开发自己的SDK,而后者又依赖于某些第三方SDKS。例如-OkHttp。
我应该将OkHttp添加到我的build.gradle
还是让我的SDK用户包括?在这种情况下,他们可能会“无论如何”使用它,因此可以肯定地说他们已经拥有它。
要补充的一点-并非我的SDK的所有路径都需要“ OkHttp”,因此,从理论上讲,我的SDK的某些用户只能使用这些部分,而在其APK上没有OkHttp。
我正在考虑的另一件事:
如果我确实通过build.gradle
嵌入OkHttp-SDK的用户如何使用该OkHttp库,而不是使用另一个副本?
答案 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,依赖项
消耗品?否
可解决?否
说明:应在此处声明依赖项,这些依赖项将以可传递方式导出到使用者以进行编译。
实现: 角色:声明,实现,依赖项
消耗品?否
可解决?否
描述:在这里,您应该声明依赖关系,这些依赖关系纯粹是内部的,并不打算向消费者公开。