2017-09-18 3 views
2

Zwei der Komponenten einer Android-Anwendung hängt von zwei verschiedenen Versionen derselben Bibliothek ab. (Google Protobuf).Erstellen mit mehreren Versionen der gleichen Abhängigkeit

dh. Modul 1 ist abhängig von protobuf2, während Modul 2 braucht protobuf3.

Die erforderlichen Teile der beiden Versionen sind sich gegenseitig ausschließende und damit nicht austauschbar.

Bislang verwenden intern die neueste Version der beiden Versionen und ein Modul bricht bei einer fehlenden Methode.

Ist es möglich, Gradle zu zwingen, Version 2 für die abhängigen 2 und Version 3 für die 3 abhängigen zu verwenden? Oder was sind die möglichen Alternativen, um diese Art von Problem anzugehen?

Prost.

+0

Haben Sie eine andere Pom-Datei für Module1 und Module2? – Punit

+0

Wir haben verschiedene build.gradle-Dateien. Android Haupt-App build.gradle und die Build.gradle-Datei des importierten Android-Submoduls. –

Antwort

2

Ich denke, wenn Sie verschiedene Build.Gradle-Dateien für Ihre jeweiligen Module haben und diese Module durch einige Eltern build.gradle Datei verknüpft sind, dann sollte es kein Problem geben.

Ich bin kein Experte für Gradle, sondern mit Maven für eine lange Zeit und diese sind irgendwie ähnlich in der Natur.

In Maven, kann ich die gleiche Abhängigkeit mit verschiedenen Versionen in verschiedenen Modul pom-Datei deklarieren:

<dependency> 
     <groupId>org.mongodb</groupId> 
     <artifactId>mongo-java-driver</artifactId> 
     <version>3.2.2</version> 
</dependency> 

In einem anderen, pom-Datei können Sie verschiedene Versionen erklären:

<dependency> 
     <groupId>org.mongodb</groupId> 
     <artifactId>mongo-java-driver</artifactId> 
     <version>2.13.2</version> 
</dependency> 

Jetzt Sie, kann sehen, dass zwei verschiedene versionierte Gläser unter 'Maven-dependencies' verschiedener Module hinzugefügt werden.

In derselben Pom-Datei ist es nicht möglich, Profiling zu verwenden. Sonst wird es immer das Glas auswählen, das am nächsten zu seinem Abhängigkeitsbaum von 2-3 verschiedenen Versionsgläsern ist.

+0

Das macht Sinn. In unserem Fall wird die letzte Version der Abhängigkeit als eine Abhängigkeit zum primären build.gradle hinzugefügt, also können wir versuchen, diesen spezifischen Code mit einer anderen build.gradle-Datei zu einem anderen Untermodul zu kompilieren und zu sehen. Danke für die Antwort wird mit den Ergebnissen aktualisiert. –

Verwandte Themen