场景
我有两个Android库:
库B依赖于库A,并从其build.gradle中包含它。
我的安卓应用程序需要使用B库和A库的一些基类。我在这方面取得的唯一成功就是在我的安卓应用程序的build.gradle中包括两个库,并将传递设置为false。
问题
有没有办法让我只添加B库,并从我的Android应用程序中访问它的依赖项?
Android Studio
Android Studio 3.1 Canary
Build #AI-171.4415322, built on October 24, 2017
JRE: 1.8.0_152-release-1012-b01 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Mac OS X 10.12.6Gradle
3.1.0-alpha01发布于 2017-11-01 18:05:44
从评论中可以看出,如果您需要在应用程序中使用库A,并且您的库A包含在使用implementation project(':LibA')的B中,那么它将不会传递到您的主应用程序。
您必须使用B ( api,api project(':LibA') )将其包含进来。
api配置应该用于导出到外部模块的依赖项(传递依赖项)。implementation配置应该用于组件内部的(而不是传递依赖项)的依赖项。
发布于 2017-11-01 17:50:42
这就是所谓的传递依赖。
Gradle和所有其他依赖系统都会自动处理这个问题。如果B需要A,则得到A如果没有A,这意味着B的依赖关系是不正确的。
是否应该在依赖项中显式地调用A是一个有争议的话题。我是你不该去的营地。我的理由是你最终会有这样的结果,
include B(v1.0) -depends on-> A(1.0)
include A(1.1)现在,A的哪个版本被编译到您的应用程序中并在运行时使用?1.0还是A1.1?答案取决于构建系统的实现。
https://stackoverflow.com/questions/47060450
复制相似问题