2017-09-18 92 views
2

android應用程序的兩個組件依賴於同一個庫的兩個不同版本。 (谷歌protobuf)。構建多個版本的相同依賴項

即。 模塊1取決於protobuf2,而模塊2需要protobuf3

這兩個版本所需的部分是互斥因此不可互換

到目前爲止,gradle在內部使用兩個版本中的最新版本,一個模塊在缺少方法時中斷。

是否有可能迫使gradle這個使用版本2爲2的依賴和版本3對3的依賴?否則,解決這類問題有哪些可能的選擇?

乾杯。

+0

您對Module1和Module2有不同的pom文件嗎? – Punit

+0

我們有不同的build.gradle文件。 Android主應用程序的build.gradle和導入的android子模塊的build.gradle文件。 –

回答

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> 

現在,你可以看到兩個不同版本的罐子將被添加到不同模塊的'Maven-dependencies'下。

在相同的pom文件中,如果不使用分析將不可能。否則,它將始終從2-3個不同版本的罐子中挑選最靠近其依賴關係樹的瓶子

+0

這是有道理的。在我們的例子中,依賴項的最新版本被添加爲主build.gradle的依賴項,所以我想我們可以嘗試使用單獨的build.gradle文件將該特定代碼編譯爲另一個子模塊並查看。感謝您的答案將更新與結果。 –

相關問題