2016-10-31 8 views
1

Gesamt Method Count in meinem Projekt ist 155,323. Es gibt viele Bibliotheken, die ich benutze. Zuerst habe ich Play-Dienste wie diese verwendet.So entfernen Sie Gradle Conflicts

compile 'com.google.android.gms:play-services:9.0.1' 

Ich war immer ClassDefNotFound Fehler in GoogleVR: verwandte Klassen.

Dann habe ich die allgemeine Bibliothek von play-services entfernt und die spezifischen hinzugefügt. Der Fehler war weg. Ich war glücklich und überrascht.

Leider ist der Fehler wieder gekommen, gleich nach dem Hinzufügen der folgenden Bibliothek bekomme ich ClassDefNotFound in einer meiner Klasse.

repositories { 
    maven { 
     url "https://s3.amazonaws.com/repo.commonsware.com" 
    } 
} 

dependencies { 
    compile 'com.commonsware.cwac:merge:1.1.+' 
} 

java.lang.NoClassDefFoundError: Failed resolution of: Lcom/video_lib/android/utils/NetworkClient;

Wenn ich commonsware Bibliothek zu entfernen, es funktioniert gut, aber die commonsware Bibliothek ist von wesentlicher Bedeutung für eine andere API, und ich habe es zu benutzen.

Der Fehler kann auf gradle conflict zurückzuführen sein. Bitte leiten Sie mich, wie man Großkonflikt identifiziert und entfernt.

+0

es ist widersprüchlich, dass die commonsware lib einschließlich der google play lib –

Antwort

1

Führen Sie gradle app:dependencies aus, um den Abhängigkeitsbaum anzuzeigen. Suchen Sie nach den mehreren Versionen derselben Bibliothek und/oder mehreren Versionen von Bibliotheken aus derselben Familie. Wenden Sie dann Gewalt an, um nur eine davon zu lassen. Verwendung
Kompilierung 'com.android.support:multidex:1.0.0'

ermöglichen die multidex Unterstützung in Ihrer gradle Datei

+0

Dank bedeutet, habe ich nicht an "grddle app: abhängigkeiten" gearbeitet. Bitte führen Sie mich oder teilen Sie einen Link von wo ich lernen kann, "Gradle App: Abhängigkeiten" auszuführen, und muss ich irgendetwas auf build.grade schreiben, um Bibliotheken gewaltsam zu entfernen. – Kirmani88

+0

@ Kirmani88 Sie können von [Gradle Userguide Abhängigkeitsverwaltung Abschnitt] (https://docs.gradle.org/current/userguide/dependency_management.html) starten. Erzwingen beschrieben in [24.8.2. Regeln zur Abhängigkeitsauflösung verwenden (https://docs.gradle.org/current/userguide/dependency_management.html#sec:forcing_modules). [Ausschließen von transitiven Abhängigkeiten] (https://docs.gradle.org/current/userguide/dependency_management.html#sub:exclude_transitive_dependencies) im entsprechenden Abschnitt dieses Handbuchs. – Ivan

+1

@ Kirmani88 wie zum Ausführen von Gradle-Befehl, können Sie das Gradle Wrapper-Skript verwenden, das android studio im Stamm Ihres Projekts erstellt haben sollte, wie in http://stackoverflow.com/questions/24398041/build-android-studio-app-via- beschrieben. Befehlszeile – Ivan

0

Nur für den Fall für Multi-dex Problem, bei dem das Verfahren Zahl 64k Grenze überschreitet multiDexEnabled true

In Ihrem Manifest fügen Sie die MultiDexApplication-Klasse aus der multidex-Unterstützungsbibliothek zum Anwendungselement hinzu.