android應用程序的兩個組件依賴於同一個庫的兩個不同版本。 (谷歌protobuf)。構建多個版本的相同依賴項
即。 模塊1取決於protobuf2,而模塊2需要protobuf3。
這兩個版本所需的部分是互斥因此不可互換。
到目前爲止,gradle在內部使用兩個版本中的最新版本,一個模塊在缺少方法時中斷。
是否有可能迫使gradle這個使用版本2爲2的依賴和版本3對3的依賴?否則,解決這類問題有哪些可能的選擇?
乾杯。
android應用程序的兩個組件依賴於同一個庫的兩個不同版本。 (谷歌protobuf)。構建多個版本的相同依賴項
即。 模塊1取決於protobuf2,而模塊2需要protobuf3。
這兩個版本所需的部分是互斥因此不可互換。
到目前爲止,gradle在內部使用兩個版本中的最新版本,一個模塊在缺少方法時中斷。
是否有可能迫使gradle這個使用版本2爲2的依賴和版本3對3的依賴?否則,解決這類問題有哪些可能的選擇?
乾杯。
我想,如果你有你的各個模塊不同的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個不同版本的罐子中挑選最靠近其依賴關係樹的瓶子。
這是有道理的。在我們的例子中,依賴項的最新版本被添加爲主build.gradle的依賴項,所以我想我們可以嘗試使用單獨的build.gradle文件將該特定代碼編譯爲另一個子模塊並查看。感謝您的答案將更新與結果。 –
您對Module1和Module2有不同的pom文件嗎? – Punit
我們有不同的build.gradle文件。 Android主應用程序的build.gradle和導入的android子模塊的build.gradle文件。 –