2016-05-09 16 views
1

Ich habe zwei Module in meiner Android App: app und library. app hängt von libraryWie man zwei verschiedene Module in Android Studio verwendet verschiedene Versionen der gleichen Bibliothek über Gradle

In library I AndroidAnnotations 4.0.0

In app ich zur Zeit wollen verwenden möchten AndroidAnnotations 3.2.2 verwenden, weil es zu 4.0.0 Upgrade würde eine enorme Menge an Änderungen erfordern, da sie es ziemlich geändert haben viel, und ich habe jetzt keine Zeit, das zu tun.

jedoch seitdem ich ein Upgrade libraryAndroidAnnotations 4.0.0 zu verwenden, die Nutzung von AndroidAnnotations in app verhält sich wie es Version 4, nicht Version 3, die mich denken lässt, dass Gradle wirklich klug war und ignoriert Version 3 für app und wird mit Version 4 für beide Module.

Wie kann ich die Verwendung von zwei verschiedenen Versionen einer Abhängigkeit in Großbuchstaben erzwingen?

+0

Sie nicht zwei verschiedene Versionen haben kann, da werde da Namespace Auseinandersetzungen sein. Die einzige Möglichkeit besteht darin, eine der Versionen neu zu verpacken und den Paketnamen der Klassen zu ändern, damit sie nicht kollidieren. –

Antwort

0

Erzwingen die Verwendung einer Abhängigkeits Version über eine andere mit dem force Befehl

build.gradle (app):

dependencies { 
    compile ('com.squareup.okhttp:okhttp:2.4.0') { 
     force = true 
    } 
    ... 
} 

build.gradle (Bibliothek):

dependencies { 
    compile 'com.squareup.okhttp:okhttp:2.3.0' 
    ... 
} 

Hier Auszug aus der Dokumentation, wenn der Link ungültig wird:

Ermöglicht das Erzwingen bestimmter Versionen von Abhängigkeiten, einschließlich transitiver Abhängigkeiten. Fügt neue erzwungene Module hinzu, die berücksichtigt werden sollen, wenn Abhängigkeiten aufgelöst werden.

Er akzeptiert Notationen folgende:

String in a format of: 'group:name:version', for example: 'org.gradle:gradle-core:1.0' 
instance of ModuleVersionSelector 
any collection or array of above will be automatically flattened 
Verwandte Themen