Android应用程序的两个组件依赖于同一个库的两个不同版本。 (google protobuf)。
即。 模块1 取决于 protobuf2 ,而模块2 需要 protobuf3 。
两个版本中所需的部分是互斥,因此不可互换。
到目前为止,gradle内部使用两个版本中的最新版本,并且一个模块在缺少方法时中断。
是否可以强制gradle使用版本2作为2的依赖版本和版本3作为3版本的依赖版本?或者,解决这类问题的可能替代方案是什么?
干杯。
答案 0 :(得分:2)
我想,如果您为各自的模块使用不同的build.gradle文件,并且这些模块由某个父build.gradle文件链接,那么应该没有任何问题。
我不是gradle的专家,但是长时间使用maven,这些在某种程度上是相似的。
在maven中,我可以在不同模块的pom文件中声明不同版本的相同依赖:
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.2.2</version>
</dependency>
在另一个pom文件中,您可以声明不同的版本:
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>2.13.2</version>
</dependency>
现在,您可以看到两个不同版本的广告罐将添加到&#39; Maven-dependencies
&#39;不同的模块。
在同一个pom文件中,如果不使用分析,它将无法实现。否则,它将始终从2-3个不同的版本罐中挑选最接近它的依赖树的jar。